             
             // subtract previous node's height and its gap.
             indDiff = node.rowIndex - prevNode.rowIndex - 1;
-            nodeY = currentY = currentY - indDiff * (defaultRowHeight + rowGap) - (prevNode.maxCellHeight + rowGap); 
+            currentY = currentY - indDiff * (defaultRowHeight + rowGap) - (prevNode.maxCellHeight + rowGap);
+            nodeY = currentY;
             node = prevNode;
         }
 

    public function getContentHeight(rowCountOverride:int = -1):Number
    {
		const nRows:int = (rowCountOverride == -1) ? rowCount : rowCountOverride;
		
        if (!isNaN(fixedRowHeight))
            return (nRows * (fixedRowHeight + rowGap)) - rowGap;
        
        if (rowList.length == 0)
            return (nRows * (defaultRowHeight + rowGap)) - rowGap;
        
        var height:Number = 0;
        var node:GridRowNode = rowList.first;
        var numRows:int = 0;
        
        while (node && node.rowIndex < nRows)
        {
            height += node.maxCellHeight;
            numRows++;
            node = node.next;
        }
        
        var contentHeight:Number = height + (nRows - numRows) * defaultRowHeight;
        if (nRows > 1)
            contentHeight += (nRows - 1) * rowGap;
        
        return contentHeight;
    }

            return;
        
        _rowCount = value;
        
        if (recentNode && recentNode.rowIndex >= _rowCount)
            recentNode = null;
        if (recentNode2 && recentNode2.rowIndex >= _rowCount)
            recentNode2 = null;
        
        // FIXME (klin): remove a range of indices...
    }
    
