         	   !isNaN(scaleGridRight) &&
         	   !isNaN(scaleGridBottom);
     }
-    
+
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: EventDispatcher
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  We render a transparent background fill by default when we have mouse
+     *  listeners.
+     */
+    override public function addEventListener(type:String, listener:Function,
+        useCapture:Boolean = false, priority:int = 0,
+        useWeakReference:Boolean = false):void
+    {
+        super.addEventListener(type, listener, useCapture, priority, 
+            useWeakReference);
+
+        if (_mouseOpaque &&
+            type == MouseEvent.CLICK ||
+            type == MouseEvent.DOUBLE_CLICK ||
+            type == MouseEvent.MOUSE_DOWN ||
+            type == MouseEvent.MOUSE_MOVE ||
+            type == MouseEvent.MOUSE_OVER ||
+            type == MouseEvent.MOUSE_OUT ||
+            type == MouseEvent.ROLL_OUT ||
+            type == MouseEvent.ROLL_OVER ||
+            type == MouseEvent.MOUSE_UP ||
+            type == MouseEvent.MOUSE_WHEEL)
+        {
+            if (mouseEventReferenceCount++ == 0)
+                invalidateDisplayList();
+        }
+    }
+
+    /**
+     *  @private
+     *  We no longer render our default transparent background fill when we have 
+     *  no mouse listeners.
+     */
+    override public function removeEventListener( type:String, listener:Function,
+        useCapture:Boolean = false):void
+    {
+        super.removeEventListener(type, listener, useCapture);
+
+        if (_mouseOpaque && 
+            type == MouseEvent.CLICK ||
+            type == MouseEvent.DOUBLE_CLICK ||
+            type == MouseEvent.MOUSE_DOWN ||
+            type == MouseEvent.MOUSE_MOVE ||
+            type == MouseEvent.MOUSE_OVER ||
+            type == MouseEvent.MOUSE_OUT ||
+            type == MouseEvent.ROLL_OUT ||
+            type == MouseEvent.ROLL_OVER ||
+            type == MouseEvent.MOUSE_UP ||
+            type == MouseEvent.MOUSE_WHEEL)
+        {
+            if (--mouseEventReferenceCount == 0)
+                invalidateDisplayList();
+        }
+    }
+        
     //--------------------------------------------------------------------------
     //
     //  Overridden methods: UIComponent

    }
    
    //----------------------------------
    //  mxmlContent
    //----------------------------------
    


import flash.display.BlendMode;
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.geom.Rectangle;

import mx.core.IFontContextComponent;
import mx.core.IUITextField;
import mx.core.IVisualElement;
import mx.core.IVisualElementContainer;
import mx.core.UIComponent;
import mx.core.mx_internal;
import mx.styles.ISimpleStyleClient;
import mx.styles.IStyleClient;
import mx.styles.StyleProtoChain;

import spark.components.supportClasses.GroupBase;
import spark.core.IGraphicElement;
import spark.core.ISharedDisplayObject;
import spark.events.ElementExistenceEvent;
import spark.primitives.supportClasses.TextGraphicElement;

use namespace mx_internal;

