I have assessed the situation by inspecting the dxscoreboard resource. It looks like my assumption was wrong that generic cells would support color coding. Instead, the color coding appears to be only supported for player and team names! With that let-down in mind I was able to find the root of the problem:
dxDrawText( content, topX+theX+s(1), y+s(1), topX+x+s(1+column.width), y+s(11)+dxGetFontHeight( fontscale(contentFont, scoreboardScale), contentFont ), tocolor( 0, 0, 0, a or 255 ), fontscale(contentFont, s(1)), contentFont, "left", "top", true, false, drawOverGUI )
dxDrawText( content, topX+theX, y, topX+x+s(column.width), y+dxGetFontHeight( fontscale(contentFont, scoreboardScale), contentFont ), tocolor( r or 255, g or 255, b or 255, a or 255 ), fontscale(contentFont, s(1)), contentFont, "left", "top", true, false, drawOverGUI )
At lines 750, 751 for player rows and 659, 660 for teams in the officially bundled scoreboard resource for the MTA server. It looks like you have to extend the drawing logic of this resource. I suggest you to try adding a cell-based color overwrite value that gets applied in all scenarios. Since that resource is written like a trainwreck, trying to please very special interests, I cannot guide you into a specific overhaul direction. You need to make sure that you apply proper book-keeping related to row removal and addition. Then you need to make the distinctions between player and team rows. It really looks like a mess, but good luck!
Also that player count appears to be a basic configuration option for the dxscoreboard resource, so the resource you use does not seem to be that custom in hindsight.