         if (compoundTransform)
         {
             transformMatrix = compoundTransform.matrix;
-            transformMatrix.translate(bounds.left, bounds.top);
+            transformMatrix.translate(targetBounds.left, targetBounds.top);
         }
         else
         {

            
            // If fillMode is scale and our bitmapdata width and height are > 0, scale to fill the content area  
            if (fillMode == BitmapFillMode.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, fillMode 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 &&
             bounds.width <= sourceAsBitmapData.width && 
             bounds.height <= sourceAsBitmapData.height))
        {
            if (nonRepeatAlphaSource && nonRepeatSourceCreated)
            {

	/**
	 *  @private
	 */
	public function begin(target:Graphics, targetBounds:Rectangle, targetOrigin:Point):void
	{		
        var sourceAsBitmapData:BitmapData = _bitmapData;
        
