So a renderer would need to do the color conversions itself? In that case, it seems like it would be better to just leave the dithering code outside of this function. Otherwise there would be a mismatch in behavior between `write_scanline` and `write_tile`, no?