 	          Vy = -Vy;
 	    }
 	 
-	    v[2] = Math.atan2( Uy, Ux ) / RADIANS_PER_DEGREES;     
-	    v[0] = m.tx;
-	    v[1] = m.ty;
+	    v[2] = Math.atan2( Uy, Ux ) / RADIANS_PER_DEGREES;
+	    
+	    if(transformX != 0 || transformY != 0)     
+	    {
+	    	var postTransformCenter:Point = m.transformPoint(new Point(transformX,transformY));
+	    	v[0] = postTransformCenter.x - transformX;
+	    	v[1] = postTransformCenter.y - transformY;
+	    }
+	    else
+	    {
+		    v[0] = m.tx;
+		    v[1] = m.ty;
+		}
 	}
 	
 	/**

     */
	mx_internal function get transformY():Number
	{
		if ((_flags & PROPERTIES_VALID) == false) validatePropertiesFromMatrix();
		return _transformY;
	}
	//------------------------------------------------------------------------------

	import mx.core.mx_internal;
	import mx.geom.ITransformable;
	import mx.core.AdvancedLayoutFeatures;
	import flash.geom.Point;
	use namespace mx_internal;	
	
	/**
