The reason I wasn't able to draw offscreen was that unlike the tiled map solution, my "tiled map" didn't go right to the edges of the screen. To use this sort of solution I'd have to draw my "map tiles" then draw over them with a mask to hide the bits that would normally be hidden by the edges of the screen. With the way my program was built, it was getting overcompilcated and messy, I ended up redesigning my interface to simplify things.