             // reuse or create a new renderer
             
             renderer = oldRenderers[column];
+            oldRenderers[column] = null;
             if (!renderer)
             {
                 var factory:IFactory = column.headerRenderer;
                 if (!factory)
                     factory = columnHeaderBar.headerRenderer;
                 renderer = allocateVisualElement(factory) as IGridItemRenderer;
+                
+                // Track which item renderers were created (uncommon) or recycled
+                // for the sake of the IGridItemRenderer prepare() method.
+                
+                if (createdVisualElement)
+                {
+                    if (!createdItemRenderers)
+                        createdItemRenderers = new Vector.<IGridItemRenderer>();
+                    createdItemRenderers.push(renderer);
+                }
+                else
+                {
+                    allocatedItemRenderers.push(renderer);
+                }
             }
                 
             // initialize the renderer

        const rendererY:Number = paddingTop;
        const rendererHeight:Number = unscaledHeight - paddingTop - paddingBottom;
        const maxRendererX:Number = columnHeaderBar.horizontalScrollPosition + unscaledWidth;
        
        var columnIndex:int = -1;
        var visibleLeft:Number = 0;

        visibleRenderersBounds.top = rendererY;
        visibleRenderersBounds.height = rendererHeight;
        
        // Call prepare on renderers.
        if (createdItemRenderers)
        {
            for each (var createdRenderer:IGridItemRenderer in createdItemRenderers)
                createdRenderer.prepare(false);
        }
        
        for each (var allocatedRenderer:IGridItemRenderer in allocatedItemRenderers)
            allocatedRenderer.prepare(true);
            
        // We may have created new renderers or changed their visibility.  Force
        // validation to avoid a display list flash.
        
