         
         if (value > 0 && value < 1 && !blendModeExplicitlySet)
         {
-            _blendMode = BlendMode.LAYER;
-            blendModeChanged = true;
+            if (_blendMode != BlendMode.LAYER)
+            {
+                _blendMode = BlendMode.LAYER;
+                blendModeChanged = true;
+                needsDisplayObjectAssignment = true;
+                invalidateProperties();
+            }
         }
         else if ((value == 1 || value == 0) && !blendModeExplicitlySet)
         {
-            _blendMode = BlendMode.NORMAL;
-            blendModeChanged = true;
+            if (_blendMode != BlendMode.NORMAL)
+            {
+                _blendMode = BlendMode.NORMAL;
+                blendModeChanged = true;
+                needsDisplayObjectAssignment = true;
+                invalidateProperties();
+            }
         }
             
         super.alpha = value;
-        
-        if (blendModeChanged) 
-            needsDisplayObjectAssignment = true;
-        invalidateProperties();
     }
     
     //----------------------------------


    private var _scaleGridLeft:Number;
    
    [Bindable("propertyChange")]
    [Inspectable(category="General")]
    
    /**

        // Since GraphicElement is not ILayoutManagerClient, we need to make sure we
        // validate sizes of the elements, even in cases where recursive==false.
        
        // TODO EGeorgie: we need to optimize this, iterating through all the elements is slow.
        // Validate element size
        if (numGraphicElements > 0)
        {
            var length:int = numElements;
            for (var i:int = 0; i < length; i++)
            {
                var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                if (element)
                    element.validateSize();
            }
        }

        super.validateSize(recursive);
