         var transformedP:Point;
         tempLocalPosition = 
             localPosition ?
-            localPosition :
+            localPosition.clone() :
             new Vector3D();
                 
         if (is3D || propertyIs3D) 

            
            if (targetPostLayoutPosition != null && _postLayoutTransformOffsets != null)
            {           
                var currentPostLayoutPosition:Point = 
                    computedMatrix.transformPoint(transformCenterP);
                if (currentPostLayoutPosition.x != targetPostLayoutPosition.x || 

            }
            if (targetPostLayoutPosition != null && _postLayoutTransformOffsets != null)
            {
                // computedMatrix factor in stretchXY, so divide it out of transform center first
                var tmpPos:Vector3D = new Vector3D(transformCenter.x, transformCenter.y, transformCenter.z);
                tmpPos.x /= stretchX;
                tmpPos.y /= stretchY;
                var adjustedComputedCenterV:Vector3D = transformVector(computedMatrix3D, tmpPos);
                if (adjustedComputedCenterV.equals(targetPostLayoutPosition) == false)
                {
                    postLayoutTransformOffsets.x +=targetPostLayoutPosition.x - adjustedComputedCenterV.x;
