             if (prevZ != _layoutFeatures.layoutZ)
                 dispatchEvent(new Event("zChanged"));
         }
+        else
+        {
+            if (translation == null && transformCenter != null)
+            {
+                if (xformPt == null)
+                    xformPt = new Point();
+                xformPt.x = transformCenter.x;
+                xformPt.y = transformCenter.y;                
+                var xformedPt:Point = 
+                    transform.matrix.transformPoint(xformPt);
+            }
+            if (rotation != null && !isNaN(rotation.z))
+                this.rotation = rotation.z;
+            if (scale != null)
+            {
+                scaleX = scale.x;
+                scaleY = scale.y;
+            }            
+            if (transformCenter == null)
+            {
+                if (translation != null)
+                {
+                    x = translation.x;
+                    y = translation.y;
+                }
+            }
+            else
+            {
+                if (xformPt == null)
+                    xformPt = new Point();
+                xformPt.x = transformCenter.x;
+                xformPt.y = transformCenter.y;                
+                var postXFormPoint:Point = 
+                    transform.matrix.transformPoint(xformPt);
+                if (translation != null)
+                {
+                    x += translation.x - postXFormPoint.x;
+                    y += translation.y - postXFormPoint.y;
+                }
+                else
+                {
+                    x += xformedPt.x - postXFormPoint.x;
+                    y += xformedPt.y - postXFormPoint.y;                                   
+                }
+            }
+        }
         
         if (!invalidateLayout)
             _includeInLayout = oldIncludeInLayout;
     }
 
     /**
-     *  A utility method to transform a point specified in the local
-     *  coordinates of this object to its location in the object's parent's 
-     *  coordinates. The pre-layout and post-layout result is set on 
-     *  the <code>position</code> and <code>postLayoutPosition</code>
-     *  parameters, if they are non-null.
-     *  
-     *  @param localPosition The point to be transformed, specified in the
-     *  local coordinates of the object.
-     *  @position A Vector3D point that holds the pre-layout
-     *  result. If null, the parameter is ignored.
-     *  @postLayoutPosition A Vector3D point that holds the post-layout
-     *  result. If null, the parameter is ignored.
+     * A utility method to transform a point specified in the local
+     * coordinates of this object to its location in the object's parent's 
+     * coordinates. The pre-layout and post-layout result is set on 
+     * the <code>position</code> and <code>postLayoutPosition</code>
+     * parameters, if they are non-null.
+     * 
+     * @param localPosition The point to be transformed, specified in the
+     * local coordinates of the object.
+     * @position A Vector3D point that holds the pre-layout
+     * result. If null, the parameter is ignored.
+     * @postLayoutPosition A Vector3D point that holds the post-layout
+     * result. If null, the parameter is ignored.
      * 
      *  @langversion 3.0
      *  @playerversion Flash 10

    //  ILayoutElement
    //
    //--------------------------------------------------------------------------

    /**
     *  @inheritDoc

            validateMatrix();
    }

    private static var xformPt:Point;

    /**
     *  @copy mx.core.ILayoutElement#transformAround()
     *  
