Not sure what I've done wrong...

Well, I could, but then that defeats the whole point of my question. What if I said I wanted to improve that to a 320240 display? Then it would require 2 320240 arrays, and even with your idea:
320*240 / 8 / 1024
Still equals more RAM than my Arduinos have.
So thank you but I would rather just fix the coding problem.