                 gridDimensions.setCellHeight(rowIndex, colIndex, renderer.getPreferredBoundsHeight());
                 cellX += colWidth + colGap;
             }
-            
-            // TBD: if gridDimensions.rowHeight is now larger, we need to make another
-            // pass to fix up the item renderer heights.
-            
+           
+            // If gridDimensions.rowHeight is now larger, we need to make another
+            // pass to fix up the item renderer heights.           
+            const finalRowHeight:Number = gridDimensions.getRowHeight(rowIndex);
+            if (rowHeight != finalRowHeight)
+            {
+                rowHeight = finalRowHeight;
+                for each (colIndex in newVisibleColumnIndices)
+                {
+                    renderer = newVisibleItemRenderers[irOffsetForRow + colIndex];                    
+                    layoutGridElement(renderer, renderer.x, renderer.y, 
+                                      renderer.width, rowHeight);
+                    gridDimensions.setCellHeight(
+                        rowIndex, colIndex, renderer.getPreferredBoundsHeight());
+                }
+            }    
+                                               
             cellX = startCellR.x;
             cellY += rowHeight + rowGap;
             

        {
            newVisibleRowIndices.push(rowIndex);
            
            var rowHeight:Number = gridDimensions.getRowHeight(rowIndex);
            for each (colIndex in newVisibleColumnIndices)
            {

            else
                availableHeight -= rowHeight + rowGap;            
        }
           
        // Free renderers that aren't in use
        
        for each (var oldRenderer:IVisualElement in visibleItemRenderers)
