This is really neat. Did you consider using the full range of Unicode block glyphs to squeeze out a little bit more resolution from the terminal vs just using the half-block?
https://github.com/blitzcode/term-gfx/blob/master/src/main.r...
You're still just getting two colors per character, but I think it works quite nicely.