Du formatierst mit sprintf() deinen Text auf eine konstante Breite. Das ist im Prinzip bei allen Displays das korrekte Verfahren. So spart man sich den Zwischenschritt der das Flackern verursacht und der Text wird komplett überschrieben
Wenn ich das richtig in Erinnerung habe ist das Problem bei der Adafruit Library, dass da aber normal nicht alle Pixel neu gezeichnet werden. Es gibt aber zwei Versionen von setTextColor():
setTextColor(uint16_t c),
setTextColor(uint16_t c, uint16_t bg),
Wird dass nicht dadurch behoben dass man einfach die Version mit zwei Parametern verwendet und die Hintergrundfarbe explizit setzt?