             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;

        
        var indices:Vector.<int> = null;  // return value       

		for (var columnIndex:int = startIndex; (width > 0) && (columnIndex < columnCount); columnIndex++)
		{
            var cellHeight:Number = gridDimensions.getTypicalCellHeight(columnIndex);
			var cellWidth:Number = gridDimensions.getTypicalCellWidth(columnIndex);

        if (!grid)
            return;
        
        updateGridDimensions(horizontalScrollPosition, verticalScrollPosition, NaN, NaN);        
        
        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.
        
