             // maskChanged = true; TODO (rfrishbe): need this maskChanged?
         }
         
+        if (blendModeChanged)
+        {
+            blendModeChanged = true;
+            super.blendMode = _blendMode;
+            needsDisplayObjectAssignment = true;
+        }
+        
         if (needsDisplayObjectAssignment)
         {
             needsDisplayObjectAssignment = false;

    private function assignDisplayObjects(startIndex:int = 0):void
    {
        var currentAssignableDO:DisplayObject = canShareDisplayObject ? this : null;
        var lastDisplayObject:DisplayObject = this;
        
        // Iterate through all of the items

    private static const CONTENT_TYPE_UNKNOWN:int = 0;
    private static const CONTENT_TYPE_ARRAY:int = 1;
    private static const CONTENT_TYPE_ILIST:int = 2;
    
    //----------------------------------
    //  alpha
    //----------------------------------

    [Inspectable(defaultValue="1.0", category="General", verbose="1")]

    /**
     *  @private
     */
    override public function set alpha(value:Number):void
    {
    	//The default blendMode in FXG is 'layer'. There are only
    	//certain cases where this results in a rendering difference,
    	//one being when the alpha of the Group is > 0 and < 1. In that
    	//case we set the blendMode to layer to avoid the performance
    	//overhead that comes with a non-normal blendMode. 
    	
    	if (value > 0 && value < 1 && !blendModeExplicitlySet)
    	{
    		_blendMode = BlendMode.LAYER;
    		blendModeChanged = true;
    	}
    	else if ((value == 1 || value == 0) && !blendModeExplicitlySet)
    	{
    		_blendMode = BlendMode.NORMAL;
    		blendModeChanged = true;
    	}
    		
    	super.alpha = value;
    	
		if (blendModeChanged) 
    		needsDisplayObjectAssignment = true;
    	invalidateProperties();
    }
    
    //----------------------------------
    //  blendMode
    //----------------------------------
    
    /**
     *  @private
     *  Storage for the blendMode property.
     */
    private var _blendMode:String = BlendMode.NORMAL;
    private var blendModeChanged:Boolean;
    private var blendModeExplicitlySet:Boolean;

	[Bindable("propertyChange")]
    [Inspectable(category="General", enumeration="add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay", defaultValue="normal")]

    /**
     *  Documentation is not currently available. 
     */
    override public function set blendMode(value:String):void
    {
    	if (blendModeExplicitlySet && value == _blendMode)
    		return;
    		
    	var oldValue:String = _blendMode;
    	_blendMode = value;
        dispatchPropertyChangeEvent("blendMode", oldValue, value);
    		
    	blendModeExplicitlySet = true;
    	
		blendModeChanged = true;
		needsDisplayObjectAssignment = true;
    	invalidateProperties();
    }
    
    /**
     *  Documentation is not currently available. 
     */
    override public function get blendMode():String
    {
    	if (blendModeExplicitlySet)
        	return _blendMode;
		else return BlendMode.LAYER;
    }
    
    public function set content(value:*):void
    {
