diff --git a/addons/ttf/ttf.c b/addons/ttf/ttf.c
index 5d1fb15..2bbfac5 100644
--- a/addons/ttf/ttf.c
+++ b/addons/ttf/ttf.c
@@ -447,6 +447,10 @@ static int render_glyph(ALLEGRO_FONT const *f,
    FT_Face face = data->face;
    ALLEGRO_TTF_GLYPH_DATA *glyph = get_glyph(data, ft_index);
    int advance = 0;
+   ALLEGRO_TRANSFORM old_projection_transform;
+
+   /* Workabout for bug 3484535 */
+   al_copy_transform(&old_projection_transform, al_get_projection_transform(al_get_current_display()));
 
    /* We don't try to cache all glyphs in a pre-pass before drawing them.
     * While that would indeed save us making separate texture uploads, it
@@ -457,6 +461,9 @@ static int render_glyph(ALLEGRO_FONT const *f,
    cache_glyph(data, face, ft_index, glyph, false);
    unlock_current_page(data);
 
+   /* Workabout for bug 3484535 */
+   al_set_projection_transform(al_get_current_display(), &old_projection_transform);
+
    advance += get_kerning(data, face, prev_ft_index, ft_index);
 
    if (glyph->page_bitmap) {
