     private static var xformPosition:Vector3D = new Vector3D();
     private static var postLayoutPosition:Vector3D = new Vector3D();
 
+    // Caches the transform center when start values are captured
+    // Ensures same center point used to capture and apply start and
+    // end values
+    // TODO (chaase): More correct approach might be to animate the 
+    // transform center between start and end
+    private var transformCenterPerTarget:Dictionary = new Dictionary(true);
+
     /**
      * @private
      * This flag is set when any of the translationXYZ, rotationXYZ, scaleXYZ

                // TODO (chaase): do we really need this?
                propChanges[i].stripUnchangedValues = false;
                
                var computedTransformCenter:Vector3D = 
                    computeTransformCenterForTarget(target); 
                target.transformPointToParent(computedTransformCenter, xformPosition,
                    null);               
                valueMap.translationX = xformPosition.x;

                    }
                }
                // Now transform it
                var xformCenter:Vector3D = 
                    (transformCenterPerTarget[target] !== undefined) ?
                    transformCenterPerTarget[target] :
                    computeTransformCenterForTarget(target);
                var tmpScale:Vector3D;
                var tmpPosition:Vector3D;
                var tmpRotation:Vector3D;
