Nice. Any special reason why the standard TBitmap is not enough? Not sure whether "if Worksheet.IsMerged(Cell) then continue" is correct - I think this skips the base of the merged block. Probably better to use "if Worksheet.IsMerged(Cell) and not Worksheet.IsMergeBase(Cell) then continue".