             invalidateHoverLocation(dx, dy);
         }
         
-        super.scrollPositionChanged();
+        super.scrollPositionChanged();  // sets grid.scrollRect
         
         // Only invalidate if we're clipping and scrollR extends outside validBounds
         

        if (!grid)
            return;
        
        const width:Number = grid.width;
        const height:Number = grid.height;
        if ((width > 0) && (height > 0))
            updateGridDimensions(horizontalScrollPosition, verticalScrollPosition, width, height);        
        
        var measuredWidth:Number = gridDimensions.getContentWidth(grid.requestedColumnCount);
        var measuredHeight:Number = gridDimensions.getContentHeight(grid.requestedRowCount);
		var measuredMinWidth:Number = gridDimensions.getContentHeight(grid.requestedMinColumnCount);
		var measuredMinHeight:Number = gridDimensions.getContentHeight(grid.requestedMinRowCount);
		

        // Use Math.ceil() to make sure that if the content partially occupies
        // the last pixel, we'll count it as if the whole pixel is occupied.
        

            return false;
        element.visible = false;
        
        // Reset back to (0,0), otherwise when the element is reused
        // it will be validated at its last layout size which causes
        // problems with text reflow.
        element.setLayoutBoundsSize(0, 0, false);        
        
        const factory:IFactory = elementToFactoryMap[element]; 
        if (!factory)
            return false;
