diff --git a/data/style-Adwaita:dark.css b/data/style-Adwaita:dark.css
index 815c278e4eb4c3ffeeecb6f580fe8ea5e9ebc1d5..670c21445c2acb61dcf9b30390669e741cc0fe01 100644
--- a/data/style-Adwaita:dark.css
+++ b/data/style-Adwaita:dark.css
@@ -2,6 +2,7 @@ sq_view {
     background-color: rgba(0, 0, 0, 255);
     color: #ffffff;
     font-family: cantarell, sans-serif;
+    font-size: 25px;
 }
 
 sq_view sq_button {
@@ -35,6 +36,10 @@ sq_button.locked {
     color: #2b292f;
 }
 
+sq_button.action {
+    font-size: 0.75em;
+}
+
 #Return {
     background: #1c71d8;
     border-color: #1a5fb4;
diff --git a/data/style.css b/data/style.css
index 3b47faa5fd240749eeaa8257a2959fc470b7af4a..d9ade842054504d8f265c0957ad34ffcfb5b4e3d 100644
--- a/data/style.css
+++ b/data/style.css
@@ -2,6 +2,7 @@ sq_view {
     background-color: @theme_base_color; /*rgba(0, 0, 0, 255);*/
     color: @theme_text_color; /*#ffffff;*/
     font-family: cantarell, sans-serif;
+    font-size: 25px;
 }
 
 sq_view sq_button {
@@ -38,6 +39,10 @@ sq_button.locked {
     color: @theme_bg_color; /*#2b292f;*/
 }
 
+sq_button.action {
+    font-size: 0.75em;
+}
+
 #Return {
     background: @theme_selected_bg_color; /* #1c71d8; */
     border-color: @borders; /*#1a5fb4;*/
diff --git a/eek/eek-renderer.c b/eek/eek-renderer.c
index c1301c993525e89c254a2b1ac957543e37865e12..45ff5cd5c14de935424dd62d73c21330b3b01038 100644
--- a/eek/eek-renderer.c
+++ b/eek/eek-renderer.c
@@ -42,22 +42,17 @@ typedef struct _EekRendererPrivate
     GtkStyleContext *view_context; // owned
     GtkStyleContext *button_context; // TODO: maybe move a copy to each button
 
-    gdouble border_width; // FIXME: border of what?
-
     gdouble allocation_width;
     gdouble allocation_height;
     gint scale_factor; /* the outputs scale factor */
     struct transformation widget_to_layout;
-
-    PangoFontDescription *font; // owned reference
-
 } EekRendererPrivate;
 
 G_DEFINE_TYPE_WITH_PRIVATE (EekRenderer, eek_renderer, G_TYPE_OBJECT)
 
 /* eek-keyboard-drawing.c */
-static void eek_renderer_render_button_label (EekRenderer *self, cairo_t *cr, GtkStyleContext *ctx,
-                                                const struct squeek_button *button);
+static void render_button_label (cairo_t *cr, GtkStyleContext *ctx,
+                                                const gchar *label, EekBounds bounds);
 
 void eek_render_button                         (EekRenderer *self,
                                                 cairo_t     *cr, const struct squeek_button *button,
@@ -86,8 +81,7 @@ render_outline (cairo_t     *cr,
         position.x, position.y, position.width, position.height);
 }
 
-static void render_button_in_context(EekRenderer *self,
-                                     gint scale_factor,
+static void render_button_in_context(gint scale_factor,
                                      cairo_t     *cr,
                                      GtkStyleContext *ctx,
                                      const struct squeek_button *button) {
@@ -130,7 +124,11 @@ static void render_button_in_context(EekRenderer *self,
             return;
         }
     }
-    eek_renderer_render_button_label (self, cr, ctx, button);
+
+    const gchar *label = squeek_button_get_label(button);
+    if (label) {
+        render_button_label (cr, ctx, label, squeek_button_get_bounds(button));
+    }
 }
 
 void
@@ -162,7 +160,7 @@ eek_render_button (EekRenderer *self,
     }
     gtk_style_context_add_class(ctx, outline_name);
 
-    render_button_in_context(self, priv->scale_factor, cr, ctx, button);
+    render_button_in_context(priv->scale_factor, cr, ctx, button);
 
     // Save and restore functions don't work if gtk_render_* was used in between
     gtk_style_context_set_state(ctx, GTK_STATE_FLAG_NORMAL);
@@ -173,43 +171,16 @@ eek_render_button (EekRenderer *self,
 }
 
 static void
-eek_renderer_render_button_label (EekRenderer *self,
-                                  cairo_t     *cr,
-                                  GtkStyleContext *ctx,
-                                  const struct squeek_button *button)
+render_button_label (cairo_t     *cr,
+                     GtkStyleContext *ctx,
+                     const gchar *label,
+                     EekBounds bounds)
 {
-    EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
-
-    const gchar *label = squeek_button_get_label(button);
-
-    if (!label) {
-        return;
-    }
-
     PangoFontDescription *font;
-    gdouble scale;
-
-
-    if (!priv->font) {
-        const PangoFontDescription *base_font;
-        gdouble size;
-
-        base_font = pango_context_get_font_description (priv->pcontext);
-        // FIXME: Base font size on the same size unit used for button sizing,
-        // and make the default about 1/3 of the current row height
-        size = 30000.0;
-        priv->font = pango_font_description_copy (base_font);
-        pango_font_description_set_size (priv->font, (gint)round(size * 0.6));
-    }
-
-    EekBounds bounds = squeek_button_get_bounds(button);
-    scale = MIN((bounds.width - priv->border_width) / bounds.width,
-                (bounds.height - priv->border_width) / bounds.height);
-
-    font = pango_font_description_copy (priv->font);
-    pango_font_description_set_size (font,
-                                     (gint)round(pango_font_description_get_size (font) * scale));
-
+    gtk_style_context_get(ctx,
+                          gtk_style_context_get_state(ctx),
+                          "font", &font,
+                          NULL);
     PangoLayout *layout = pango_cairo_create_layout (cr);
     pango_layout_set_font_description (layout, font);
     pango_font_description_free (font);
@@ -219,8 +190,7 @@ eek_renderer_render_button_label (EekRenderer *self,
     if (line->resolved_dir == PANGO_DIRECTION_RTL) {
         pango_layout_set_alignment (layout, PANGO_ALIGN_RIGHT);
     }
-    pango_layout_set_width (layout,
-                            PANGO_SCALE * bounds.width * scale);
+    pango_layout_set_width (layout, PANGO_SCALE * bounds.width);
 
     PangoRectangle extents = { 0, };
     pango_layout_get_extents (layout, NULL, &extents);
@@ -331,7 +301,6 @@ eek_renderer_finalize (GObject *object)
     g_object_unref(priv->css_provider);
     g_object_unref(priv->view_context);
     g_object_unref(priv->button_context);
-    pango_font_description_free (priv->font);
     G_OBJECT_CLASS (eek_renderer_parent_class)->finalize (object);
 }
 
@@ -390,11 +359,9 @@ eek_renderer_init (EekRenderer *self)
 
     priv->keyboard = NULL;
     priv->pcontext = NULL;
-    priv->border_width = 1.0;
     priv->allocation_width = 0.0;
     priv->allocation_height = 0.0;
     priv->scale_factor = 1;
-    priv->font = NULL;
 
     GtkIconTheme *theme = gtk_icon_theme_get_default ();