 		if (!source)
 			return;        
         
+        // If we need to apply the alpha, we need to make another clone. So dispose of the old one.
+        if (nonRepeatAlphaSource && applyAlphaMultiplier)
+        {
+            nonRepeatAlphaSource.dispose();
+            nonRepeatAlphaSource = null;
+        }
+        
         var sourceAsBitmapData:BitmapData = source as BitmapData;
-        
         var repeatFill:Boolean = (resizeMode == BitmapResizeMode.REPEAT);  
-        
         
         if (compoundTransform)
         {

import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.events.EventDispatcher;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;

                // Save off the bounds so we can compare it the next time this function is called
                lastBoundsWidth = bounds.width;
                lastBoundsHeight = bounds.height;
                
                nonRepeatSourceCreated = true;
                
                // Reapply the alpha if alpha is not 1.
                applyAlphaMultiplier = alpha != 1;
            }   
        }
        
        // Apply the alpha to a clone of the source. We don't want to modify the actual source because applying the alpha 
        // will modify the source and we have no way to restore the source back its original alpha value. 
        if (applyAlphaMultiplier)
        {
            // Clone the bitmapData if we didn't already make a copy for NOSCALE mode
            if (!nonRepeatAlphaSource)
                nonRepeatAlphaSource = sourceAsBitmapData.clone();
            
            var ct:ColorTransform = new ColorTransform();
            ct.alphaMultiplier = alpha;
            
            nonRepeatAlphaSource.colorTransform(new Rectangle(0, 0, nonRepeatAlphaSource.width, nonRepeatAlphaSource.height), ct);
            applyAlphaMultiplier = false;
        }
        
        // If we have a nonRepeatAlphaSource, then use it. Otherwise, we just use the source. 
        if (nonRepeatAlphaSource)
            sourceAsBitmapData = nonRepeatAlphaSource;
        
		target.beginBitmapFill(sourceAsBitmapData, transformMatrix, repeatFill, smooth);
	}
