 	 */
 	public function get repeat():Boolean
 	{
-		return _repeat;
+		return _resizeMode == BitmapResizeMode.REPEAT; 
 	}
 	
 	public function set repeat(value:Boolean):void
 	{
-		var oldValue:Boolean = _repeat;
+		var oldValue:Boolean = (_resizeMode == BitmapResizeMode.REPEAT);  
 		if (value != oldValue)
 		{
-			_repeat = value;        
+			//Setting repeat just sets resizeMode to repeat 
+			resizeMode = value ? BitmapResizeMode.REPEAT : BitmapResizeMode.SCALE; 
 			dispatchFillChangedEvent("repeat", oldValue, value);
 		}
 	}
+	
+	//----------------------------------
+    //  resizeMode
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    protected var _resizeMode:String = BitmapResizeMode.SCALE;
+    
+    [Inspectable(category="General", enumeration="noScale,repeat,scale", defaultValue="scale")]
+    
+    /**
+     *  The resizeMode determines how the bitmap fills in the dimensions. If you set the value
+     *  of this property in a tag, use the string (such as "repeat"). If you set the value of 
+     *  this property in ActionScript, use the constant (such as <code>BitmapResizeMode.NOSCALE</code>).
+     * 
+     *  When set to <code>BitmapResizeMode.NOSCALE</code> ("noScale"), the bitmap
+     *  ends at the edge of the region.
+     * 
+     *  When set to <code>BitmapResizeMode.REPEAT</code> ("repeat"), the bitmap 
+     *  repeats to fill the region.
+     *
+     *  When set to <code>BitmapResizeMode.SCALE</code> ("scale"), the bitmap
+     *  stretches to fill the region.
+     * 
+     *  @default <code>BitmapResizeMode.SCALE</code>
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
+     */
+    public function get resizeMode():String 
+    {
+        return _resizeMode; 
+    }
+    
+    /**
+     *  @private
+     */
+    public function set resizeMode(value:String):void
+    {
+    	var oldValue:String = _resizeMode; 
+        if (value != _resizeMode)
+        {
+            _resizeMode = value;
+            dispatchFillChangedEvent("resizeMode", oldValue, value);
+        }
+    }
 
 	//----------------------------------
 	//  rotation

                
                // Draw the transformed bitmapData into a new bitmapData that is the size of the bounds
                // This will prevent the edge pixels getting repeated to fill the empty space
                nonRepeatSource = new BitmapData(newW, newY);
                nonRepeatSource.draw(sourceAsBitmapData, transformMatrix);
                
                // The transform matrix has already been applied to the source, so just use identity

		if (!source)
			return;        
        
        var sourceAsBitmapData:BitmapData = source as BitmapData;
        
        var repeatFill:Boolean = (resizeMode == BitmapResizeMode.REPEAT);  
        
        
        if (compoundTransform)
        {
