diff --git a/src/vte.cc b/src/vte.cc
index eba6dfcb..8c9eb65a 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -8167,6 +8167,13 @@ VteTerminalPrivate::VteTerminalPrivate(VteTerminal *t) :
 #endif
 }
 
+void
+VteTerminalPrivate::widget_constructed()
+{
+        // An attempt to fix bug 787710.
+        widget_style_updated();
+}
+
 void
 VteTerminalPrivate::widget_get_preferred_width(int *minimum_width,
                                                int *natural_width)
@@ -8665,9 +8672,6 @@ VteTerminalPrivate::widget_realize()
 	/* Clear modifiers. */
 	m_modifiers = 0;
 
-        /* Make sure the style is set, bug 727614. */
-        widget_style_updated();
-
 	ensure_font();
 }
 
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 59b0d888..363ecfdd 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -360,6 +360,18 @@ vte_terminal_screen_changed (GtkWidget *widget,
         IMPL(terminal)->widget_screen_changed(previous_screen);
 }
 
+static void
+vte_terminal_constructed (GObject *object)
+{
+        VteTerminal *terminal = VTE_TERMINAL (object);
+
+        if (G_OBJECT_CLASS (vte_terminal_parent_class)->constructed) {
+                G_OBJECT_CLASS (vte_terminal_parent_class)->constructed (object);
+        }
+
+        IMPL(terminal)->widget_constructed();
+}
+
 static void
 vte_terminal_init(VteTerminal *terminal)
 {
@@ -633,6 +645,7 @@ vte_terminal_class_init(VteTerminalClass *klass)
 	gobject_class->finalize = vte_terminal_finalize;
         gobject_class->get_property = vte_terminal_get_property;
         gobject_class->set_property = vte_terminal_set_property;
+        gobject_class->constructed = vte_terminal_constructed;
 	widget_class->realize = vte_terminal_realize;
 	widget_class->unrealize = vte_terminal_unrealize;
         widget_class->map = vte_terminal_map;
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index e96e3f26..da769516 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -683,6 +683,7 @@ public:
         void widget_get_preferred_height(int *minimum_height,
                                          int *natural_height);
         void widget_size_allocate(GtkAllocation *allocation);
+        void widget_constructed();
 
         void widget_settings_notify();
 
