And the cached text ends up is off by TWO pixels to the left! So, obviously, I'm doing something wrong.

2) Even worse things happen, when I want to draw RIGHT or CENTER-aligned text. The cached bitmap stays the same, of course (it shouldn't be affected by alignment, should it?). But how to draw it, so the result would be the same? For now, I do this:

In point 1) you draw the text using -x and -y, so if y was 1 you would draw the text at -1 on the bitmap and then at 1 on the display?

That helps with point 1), thanks! And I looked at the source at solved 2). I just have to use al_get_text_length instead of bbw return parameter of al_al_get_text_dimensions to adjust X of al_draw_bitmap, because they differ quite a lot.