             if (blendModeChanged || displayObjectChanged)
             {
                 blendModeChanged = false;
-                displayObject.blendMode = blendMode;
+                if (_blendMode == "auto" && alpha < 1 && alpha > 0)
+                    displayObject.blendMode = BlendMode.LAYER;
+                else if (_blendMode == "auto" && alpha == 1 || alpha == 0)
+                    displayObject.blendMode = BlendMode.NORMAL;
+                else 
+                    displayObject.blendMode = _blendMode; 
             }
 
             if (filtersChanged || displayObjectChanged)

     *  @private
     *  Storage for the blendMode property.
     */
    private var _blendMode:String = BlendMode.NORMAL;
    
    /**
     *  @private
     */
    private var blendModeChanged:Boolean;

    [Inspectable(category="General", enumeration="add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="normal")]

    /**
     *  A value from the BlendMode class that specifies which blend mode to use. 
     * 
     *  @see flash.display.DisplayObject#blendMode
     *  @see flash.display.BlendMode

    {
        var result:Boolean = (alwaysCreateDisplayObject ||
        (_filters && _filters.length > 0) || 
            _blendMode != BlendMode.NORMAL || _mask ||
            (layoutFeatures != null && (layoutFeatures.layoutScaleX != 1 || layoutFeatures.layoutScaleY != 1 || layoutFeatures.layoutScaleZ != 1 ||
            layoutFeatures.layoutRotationX != 0 || layoutFeatures.layoutRotationY != 0 || layoutFeatures.layoutRotationZ != 0 ||
            layoutFeatures.layoutZ  != 0)) ||  
