     /**
      * @private
      */
+    override public function createInstance(target:Object = null):IEffectInstance
+    {
+        motionPaths = new Vector.<MotionPath>();
+        return super.createInstance(target);
+    }
+                        
+    /**
+     * @private
+     */
     override protected function initInstance(instance:IEffectInstance):void
     {
         if (!applyChangesPostLayout)
         {
-           addMotionPath("scaleZ", scaleZFrom, scaleZTo, scaleZBy);
+            addMotionPath("scaleX", scaleXFrom, scaleXTo, scaleXBy);
+            addMotionPath("scaleY", scaleYFrom, scaleYTo, scaleYBy);
+            addMotionPath("scaleZ", scaleZFrom, scaleZTo, scaleZBy);
         }
         else
         {
+            addPostLayoutMotionPath("postLayoutScaleX", scaleXFrom, scaleXTo, scaleXBy);
+            addPostLayoutMotionPath("postLayoutScaleY", scaleYFrom, scaleYTo, scaleYBy);
             addPostLayoutMotionPath("postLayoutScaleZ", scaleZFrom, scaleZTo, scaleZBy);
         }
         super.initInstance(instance);

 *  &lt;mx:Scale3D
 *    <b>Properties</b>
 *    id="ID"
 *    applyChangesPostLayout="true"
 *    scaleZBy="no default"
 *    scaleZFrom="no default"
 *    scaleZTo="no default"
 *  /&gt;
 *  </pre>
 *

import mx.core.mx_internal;
import mx.effects.IEffectInstance;

import spark.effects.animation.MotionPath;
import spark.effects.supportClasses.AnimateTransformInstance;

use namespace mx_internal;
