      *  @private
      *  Storage for the blendMode property.
      */
-    private var _blendMode:String = BlendMode.NORMAL;
+    private var _blendMode:String = "auto"; 
     
     /**
      *  @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")]
+    private var blendModeExplicitlySet:Boolean = false;
+
+    [Inspectable(category="General", enumeration="auto,add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="auto")]
 
     /**
      *  A value from the BlendMode class that specifies which blend mode to use. 
+     * 
+     *  @default auto
      * 
      *  @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)) ||  

            if (blendModeChanged || displayObjectChanged)
            {
                blendModeChanged = false;
                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)
