         }
         else 
         {
-            var previous:Boolean = needsDisplayObject;
             _blendMode = value;
-            if (previous != needsDisplayObject)
-                invalidateDisplayObjectSharing();
-        
-            blendModeExplicitlySet = true;
-            blendModeChanged = true;
-            invalidateProperties();   
+            
+			// If one of the non-native Flash blendModes is set, 
+			// record the new value and set the appropriate 
+			// blendShader on the display object. 
+			if (value == "colordodge" || 
+				value =="colorburn" || value =="exclusion" || 
+				value =="softlight" || value =="hue" || 
+				value =="saturation" || value =="color" 
+				|| value =="luminosity")
+				blendShaderChanged = true;
+			else 
+				blendModeChanged = true;
+            	
+			blendModeExplicitlySet = true;
+			invalidateProperties(); 
         }
     }
 

import mx.core.UIComponent;
import mx.core.UIComponentGlobals;
import mx.core.mx_internal;
import mx.events.FlexEvent;
import mx.events.PropertyChangeEvent;
import mx.filters.BaseFilter;
import mx.filters.IBitmapFilter;

    public function set blendMode(value:String):void
    {
        if (blendModeExplicitlySet && value == _blendMode)
            return;

        //The default blendMode in FXG is 'auto'. There are only
