I would be surprised if using memory bitmaps and GDI was not very slow by default. However, when the GP2X Wiz port was created, fast software blitters for RGB_565 and RGBA_4444 were added. Those were fast enough to use on GP2X Wiz. What I did was render everything in software with those blitters, then blast it to the screen with OpenGL. You could do the same but with GDI or something like that, and that would probably in fact be faster than using OpenGL (I also used a Linux console framebuffer in my game and it was faster than OpenGL when using software rendering). The problem right now is those blitters aren't used except when compiling for GP2X... so you'd have to recompile Allegro to use them. The other thing is, the default drawing path will be used in all but the common blending cases, which I believe are ONE, ZERO and ALPHA, INVERSE_ALPHA, which at the time was the default alpha blending mode. So it's not ideal and it needs some work, but it might prove to be fast enough. Worth sharing anyhow.