      */
     override public function set matrix(value:Matrix):void
     {
+    	scaleX = NaN;
     	scaleY = NaN;
     	super.matrix = value;
+    }
+
+    //----------------------------------
+    //  scaleX
+    //----------------------------------
+    
+    private var _scaleX:Number;
+    
+    [Bindable("propertyChange")]
+    [Inspectable(category="General")]
+    
+    /**
+     *  The horizontal scale of the gradient transform, which defines the width of the (unrotated) gradient
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function get scaleX():Number
+    {
+        return _scaleX; 
+    }
+    
+    /**
+     *  @private
+     */
+    public function set scaleX(value:Number):void
+    {
+        var oldValue:Number = _scaleX;
+        if (value != oldValue && !compoundTransform)
+        {
+            _scaleX = value;
+            dispatchGradientChangedEvent("scaleX", oldValue, value);
+        }
     }
     
     //----------------------------------

     *  @playerversion AIR 1.1
     *  @productversion Flex 3
     */
    public function begin(target:Graphics, rc:Rectangle):void
    {
    	var w:Number = !isNaN(scaleX) ? scaleX : rc.width;
    	var h:Number = !isNaN(scaleY) ? scaleY : rc.height;
		var regX:Number = rc.left + (!isNaN(x) ? x : rc.width / 2);
		var regY:Number = rc.top + (!isNaN(y) ? y : rc.height / 2);
			
		commonMatrix.identity();
		

		}
	 	else
	 	{
	 		commonMatrix.scale (bounds.width / GRADIENT_DIMENSION, bounds.height / GRADIENT_DIMENSION);
	 		commonMatrix.translate(bounds.left, bounds.top);
	 		commonMatrix.concat(compoundTransform.matrix);
	 	}
	  		  	
