--- gnome-terminal-3.10.2/src/terminal-screen.c	2013-11-11 21:36:28.000000000 +0100
+++ gnome-terminal-transparent-3.10.2/src/terminal-screen.c	2014-02-06 18:58:08.722904068 +0100
@@ -961,6 +961,11 @@
   GdkRGBA fg, bg, bold, theme_fg, theme_bg;
   GdkRGBA *boldp;
   GtkStyleContext *context;
+  /*------  CSS  ---------------------------------------------------------------------------------------------------------------*/
+  GtkCssProvider *provider;
+  GdkDisplay *display;
+  GdkScreen *gdkscreen;
+  /*----------------------------------------------------------------------------------------------------------------------------*/
 
   context = gtk_widget_get_style_context (widget);
   gtk_style_context_get_color (context, GTK_STATE_FLAG_NORMAL, &theme_fg);
@@ -984,7 +989,27 @@
   vte_terminal_set_colors_rgba (VTE_TERMINAL (screen), &fg, &bg,
                                 colors, n_colors);
   vte_terminal_set_color_bold_rgba (VTE_TERMINAL (screen), boldp);
+  vte_terminal_set_background_saturation (VTE_TERMINAL (screen), 1.0 - bg.alpha); /* normal color */
+  vte_terminal_set_opacity (VTE_TERMINAL (screen), bg.alpha * 0xffff);
   g_free (colors);
+  
+  /*------  CSS  ---------------------------------------------------------------------------------------------------------------*/
+  provider = gtk_css_provider_new ();
+  display = gdk_display_get_default ();
+  gdkscreen = gdk_display_get_default_screen (display);
+
+  gtk_style_context_add_provider_for_screen (gdkscreen,
+                                 GTK_STYLE_PROVIDER (provider),
+                                 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER(provider),
+                                   bg.alpha < 1 ? " TerminalWindow {\n"
+                                   "   background-color: rgba (0, 0, 0, 0);\n"  /* transparent background */
+                                   "}\n" : " TerminalWindow {\n"
+                                   "   background-color: rgba (0, 0, 0, 1);\n"  /* opaque background */
+                                   "}\n", -1, NULL);
+  g_object_unref (provider);
+  /*----------------------------------------------------------------------------------------------------------------------------*/
 }
 
--- gnome-terminal-3.10.2/src/terminal-window.c	2013-11-11 21:36:28.000000000 +0100
+++ gnome-terminal-transparent-3.10.2/src/terminal-window.c	2014-02-06 18:50:06.995987510 +0100
@@ -1424,9 +1424,17 @@
 {
   TerminalWindow *window = TERMINAL_WINDOW (widget);
   TerminalWindowPrivate *priv = window->priv;
+  GdkScreen *screen;
+  GdkVisual *visual;
   GtkAllocation widget_allocation;
 
   gtk_widget_get_allocation (widget, &widget_allocation);
+  screen = gtk_widget_get_screen (widget);
+  /* Set RGBA visual if possible so VTE can use real transparency */
+  visual = gdk_screen_get_rgba_visual (screen);
+  if (visual == NULL)
+    visual = gdk_screen_get_system_visual (screen);    
+  gtk_widget_set_visual (widget, visual);
 
   _terminal_debug_print (TERMINAL_DEBUG_GEOMETRY,
                          "[window %p] realize, size %d : %d at (%d, %d)\n",

