     /**
      *  @private
      */
-    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-    {       
-        super.updateDisplayList(unscaledWidth, unscaledHeight);
+    override public function validateDisplayList():void
+    {
+        // call super.validateDisplayList() and let updateDisplayList() run
+        super.validateDisplayList();
 
         // If the DisplayObject assignment is still not completed, then postpone validation
-        // of the GraphicElements
+        // of the GraphicElements. invalidateDisplayList() will be called during the next 
+        // commitProperties() call since needsDisplayObjectAssignment=true, 
+        // so we will be re-running validateDisplayList() anyways
         if (needsDisplayObjectAssignment && invalidatePropertiesFlag)
             return;
         
-        // 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
-        var sharedDisplayObject:ISharedDisplayObject = this;
-        if (sharedDisplayObject.redrawRequested)
-        {
-            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();
-            }
-        }
-                
+        // DisplayList validation happens top-down, so we should
+        // validate graphic element DisplayList after 
+        // calling super.validateDisplayList().  This is 
+        // gets tricky because of graphic-element sharing.  We clear
+        // Group's graphic's object in updateDisplayList() and handle the 
+        // rest of the DisplayList validation in here.
+        
         // Iterate through the graphic elements. If an element has a displayObject that has been 
         // invalidated, then validate all graphic elements that draw to this displayObject. 
         // The algorithm assumes that all of the elements that share a displayObject are in between
         // the element with the shared displayObject and the next element that has a displayObject.
+        
+        var sharedDisplayObject:ISharedDisplayObject = this;
         if (numGraphicElements > 0)
         {
             var length:int = numElements;

            {
                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 
        }
    }
    
    /**
