Wow, that sounds pretty hardcore! I suppose what's considered "from scratch" evolves over time. I'm old enough to have written bytes to 0xA000 (and the pain of doing page-switching in VESA modes), so even this "putPixel() on a canvas" is not exactly "from scratch" from that perspective!