I have a 128x32 display that shows scrolling mountains and 3 layers of stars in the background. I take the 4 layers of scenery and merge them into a 2D array, then I copy this the Canvas one pixel at a time.
for x in range (0,HatWidth):
for y in range (0,HatHeight):
r,g,b = rgb = FinalLayer[y][x]
This looping works great on a 64x32 display, but when I double the width to 128 it is noticeably slower.