diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index e3309f8..05f9583 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -827,6 +827,7 @@ update_color_scheme (TerminalScreen *screen)
     boldp = NULL;
 
   colors = terminal_g_settings_get_rgba_palette (priv->profile, TERMINAL_PROFILE_PALETTE_KEY, &n_colors);
+  bg.alpha = 0.9;
   vte_terminal_set_colors (VTE_TERMINAL (screen), &fg, &bg,
                            colors, n_colors);
   vte_terminal_set_color_bold (VTE_TERMINAL (screen), boldp);
diff --git a/src/terminal-window.c b/src/terminal-window.c
index 90b58d3..9a9ab94 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -2537,6 +2537,8 @@ terminal_window_init (TerminalWindow *window)
   GtkWindowGroup *window_group;
   GtkAccelGroup *accel_group;
   GtkClipboard *clipboard;
+  GdkScreen *screen;
+  GdkVisual *visual;
   uuid_t u;
   char uuidstr[37], role[64];
 
@@ -2671,6 +2673,13 @@ terminal_window_init (TerminalWindow *window)
 
   terminal_window_update_size_to_menu (window);
 
+  screen = gtk_window_get_screen (GTK_WINDOW (window));
+  visual = gdk_screen_get_rgba_visual (screen);
+  if (visual != NULL)
+    gtk_widget_set_visual (GTK_WIDGET (window), visual);
+  /* Without this transparency doesn't work; see bug #729884. */
+  gtk_widget_set_app_paintable (GTK_WIDGET (window), TRUE);
+
   /* We have to explicitly call this, since screen-changed is NOT
    * emitted for the toplevel the first time!
    */
