                     var elementDisplayObject:ISharedDisplayObject = element.displayObject as ISharedDisplayObject;
                     if (!elementDisplayObject || elementDisplayObject.redrawRequested)
                     {
-                       element.validateDisplayList();
-
-                       if (elementDisplayObject)
-                           elementDisplayObject.redrawRequested = false;
+                        element.validateDisplayList();
+                        
+                        if (elementDisplayObject)
+                            elementDisplayObject.redrawRequested = false;
                     }
                 }
             }
         }
-            
+        
         // Mark the last shared displayObject valid
         if (sharedDisplayObject)
             sharedDisplayObject.redrawRequested = false;
+    }
+    
+    /**
+     *  @private
+     */
+    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        // let user's code (layout) run first before dealing with graphic element 
+        // sharing because that's when redraws can be requested
+        super.updateDisplayList(unscaledWidth, unscaledHeight);
+        
+        // Clear the group's graphic because graphic elements might be drawing to it
+        // This isn't needed for DataGroup because there's no DisplayObject sharing
+        // This code exists in updateDisplayList() as opposed to validateDisplayList() 
+        // because of compatibility issues since most of this code was 
+        // refactored from updateDisplayList() and in to validateDisplayList().  User's code 
+        // already assumed that they could call super.updateDisplayList() and then be able to draw 
+        // into the Group's graphics object.  Because of that, the graphics.clear() call is left 
+        // in updateDisplayList() instead of in validateDisplayList() with the rest of the graphic 
+        // element sharing code.
+        var sharedDisplayObject:ISharedDisplayObject = this;
+        if (sharedDisplayObject.redrawRequested)
+        {
+            // clear the graphics here.  The pattern is usually to call graphics.clear() 
+            // before calling super.updateDisplayList() so what happens in super.updateDisplayList() 
+            // isn't erased.  However, in this case, what happens in super.updateDisplayList() isn't 
+            // much, and we want to make sure super.updateDisplayList() runs first since the layout 
+            // is what actually triggers the the shareDisplayObject to request to be redrawn.
+            graphics.clear();
+            drawBackground();
+            
+            // If a scaleGrid is set, make sure the extent of the groups bounds are filled so
+            // the player will scale our contents as expected. 
+            if (isValidScaleGrid() && resizeMode == ResizeMode.SCALE)
+            {
+                graphics.lineStyle();
+                graphics.beginFill(0, 0);
+                graphics.drawRect(0, 0, 1, 1);
+                graphics.drawRect(measuredWidth - 1, measuredHeight - 1, 1, 1);
+                graphics.endFill();
+            }
+        }
         
         if (scaleGridChanged)
         {

            {
                var element:IGraphicElement = getElementAt(i) as IGraphicElement;
                if (!element)
                   continue;

                // Do a special check for layer, we may stumble upon an element with layer != 0
                // before we're done with the current shared sequence and we don't want to mark
                // the sequence as valid, until we reach the next sequence.   

            if (isValidScaleGrid())
                resizeMode = ResizeMode.SCALE; // Force the resizeMode to scale 
        }
    }
    
    /**
