It still confuses me that one can get unaligned accesses at all, framebuffers tend to be aligned with more than the native access size (32bits for ARM). I have never touched a system with an odd stride.
How wide is the framebuffer and what is the stride?
--
One thing you can try is storing...