diff --git a/addons/font/allegro5/allegro_font.h b/addons/font/allegro5/allegro_font.h
index d143b44..5ca2726 100644
--- a/addons/font/allegro5/allegro_font.h
+++ b/addons/font/allegro5/allegro_font.h
@@ -71,10 +71,11 @@ struct ALLEGRO_FONT_VTABLE
 };
 
 enum {
-   ALLEGRO_ALIGN_LEFT   = 0,
-   ALLEGRO_ALIGN_CENTRE = 1,
-   ALLEGRO_ALIGN_CENTER = 1,
-   ALLEGRO_ALIGN_RIGHT  = 2
+   ALLEGRO_ALIGN_LEFT    = 0,
+   ALLEGRO_ALIGN_CENTRE  = 1,
+   ALLEGRO_ALIGN_CENTER  = 1,
+   ALLEGRO_ALIGN_RIGHT   = 2,
+   ALLEGRO_ALIGN_INTEGER = 4
 };
 
 ALLEGRO_FONT_FUNC(bool, al_register_font_loader, (const char *ext, ALLEGRO_FONT *(*load)(const char *filename, int size, int flags)));
diff --git a/addons/font/text.c b/addons/font/text.c
index 8629cad..4820c81 100644
--- a/addons/font/text.c
+++ b/addons/font/text.c
@@ -73,19 +73,13 @@ void al_draw_ustr(const ALLEGRO_FONT *font,
    ASSERT(font);
    ASSERT(ustr);
 
-   switch (flags) {
-      case ALLEGRO_ALIGN_CENTRE:
-         x -= font->vtable->text_length(font, ustr) * 0.5;
-         break;
-      case ALLEGRO_ALIGN_RIGHT:
-         x -= font->vtable->text_length(font, ustr);
-         break;
-      case ALLEGRO_ALIGN_LEFT:
-      default:
-         break;
-   }
+   if (flags & ALLEGRO_ALIGN_CENTRE)
+      x -= font->vtable->text_length(font, ustr) * 0.5;
+   else if (flags & ALLEGRO_ALIGN_RIGHT)
+      x -= font->vtable->text_length(font, ustr);
 
-   align_to_integer_pixel(&x, &y);
+   if (flags & ALLEGRO_ALIGN_INTEGER)
+      align_to_integer_pixel(&x, &y);
 
    font->vtable->render(font, color, ustr, x, y);
 }
