So let's just use a smaller screen for now, eh?
This is a compromise between updating the screen every frame (which takes ~60% CPU on my old no-GPU hardware) and repairing damage from e.g. dragging offscreen and back on, or covering and uncovering the window with another window.
https://github.com/maximecb/uvm