I am not sure what your screenshots above really depict. From the code in your latest post and it’s accompanying description I think you should mirror your code to the PaintCellText event, swap the colors from background to foreground colors and replace the FillRectangle calls with
g.DrawText(me.CellTextAt(row, column))
the idea being to set the foreground colors yourself, for those cells for which you painted the background yourself.