         {
             transformMatrix.identity();
             transformMatrix.translate(-transformX, -transformY);
+            
+            // If resizeMode is scale and our bitmapdata width and height are > 0, scale to fill the content area  
+            if (resizeMode == BitmapResizeMode.SCALE && sourceAsBitmapData.width > 0 && sourceAsBitmapData.height > 0)
+                transformMatrix.scale((bounds.width/sourceAsBitmapData.width), (bounds.height/sourceAsBitmapData.height)); 
+            
             transformMatrix.scale(scaleX, scaleY);
             transformMatrix.rotate(rotation * RADIANS_PER_DEGREES);
             transformMatrix.translate(x + bounds.left + transformX, y + bounds.top + transformY);
         }
 
-        // If repeat is true or if the source bitmap size equals or exceeds the bounds, 
-        // just use the source bitmap
-        if (repeat || 
+        // If repeat is true, resizeMode is repeat, or if the source bitmap size  
+        // equals or exceeds the bounds, just use the source bitmap
+        if (repeatFill || 
             (MatrixUtil.isDeltaIdentity(transformMatrix) && 
              transformMatrix.tx == bounds.left &&
              transformMatrix.ty == bounds.top &&

	//  repeat
	//----------------------------------

	private var _repeat:Boolean = true;
	
	[Bindable("propertyChange")]
    [Inspectable(category="General")]

	
	/**
	 *  Whether the bitmap is repeated to fill the area.

                
                // 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, true, 0xFFFFFF);
                nonRepeatSource.draw(sourceAsBitmapData, transformMatrix);
                
                // The transform matrix has already been applied to the source, so just use identity
