diff -ur putty.orig/PUTTY.H putty/PUTTY.H
--- putty.orig/PUTTY.H	2004-01-22 18:15:32.000000000 -0800
+++ putty/PUTTY.H	2004-05-17 16:44:10.921875000 -0700
@@ -426,6 +426,7 @@
     int hide_mouseptr;
     int sunken_edge;
     int window_border;
+    int transparency;
     char answerback[256];
     char printer[128];
     /* Colour options */
diff -ur putty.orig/SETTINGS.C putty/SETTINGS.C
--- putty.orig/SETTINGS.C	2004-04-27 13:31:58.000000000 -0700
+++ putty/SETTINGS.C	2004-05-17 23:38:07.562500000 -0700
@@ -260,6 +260,7 @@
     write_setting_i(sesskey, "FullScreenOnAltEnter", cfg->fullscreenonaltenter);
     write_setting_i(sesskey, "HideMousePtr", cfg->hide_mouseptr);
     write_setting_i(sesskey, "SunkenEdge", cfg->sunken_edge);
+    write_setting_i(sesskey, "Transparency", cfg->transparency);
     write_setting_i(sesskey, "WindowBorder", cfg->window_border);
     write_setting_i(sesskey, "CurType", cfg->cursor_type);
     write_setting_i(sesskey, "BlinkCur", cfg->blink_cur);
@@ -516,6 +517,7 @@
     gppi(sesskey, "FullScreenOnAltEnter", 0, &cfg->fullscreenonaltenter);
     gppi(sesskey, "HideMousePtr", 0, &cfg->hide_mouseptr);
     gppi(sesskey, "SunkenEdge", 0, &cfg->sunken_edge);
+    gppi(sesskey, "Transparency", 0, &cfg->transparency);
     gppi(sesskey, "WindowBorder", 1, &cfg->window_border);
     gppi(sesskey, "CurType", 0, &cfg->cursor_type);
     gppi(sesskey, "BlinkCur", 0, &cfg->blink_cur);
diff -ur putty.orig/WINCFG.C putty/WINCFG.C
--- putty.orig/WINCFG.C	2003-11-20 17:41:12.000000000 -0800
+++ putty/WINCFG.C	2004-05-17 16:43:42.453125000 -0700
@@ -173,6 +173,16 @@
 		  dlg_stdcheckbox_handler, I(offsetof(Config,sunken_edge)));
 
     /*
+     * Window transparency
+     */
+    s = ctrl_getset(b, "Window/Appearance", "alpha",
+            "Adjust the window transparency");
+    ctrl_editbox(s, "Window transparency:", NO_SHORTCUT, 20,
+            HELPCTX(appearance_transparency),
+            dlg_stdeditbox_handler,
+            I(offsetof(Config,transparency)), I(-1));
+
+    /*
      * Cyrillic Lock is a horrid misfeature even on Windows, and
      * the least we can do is ensure it never makes it to any other
      * platform (at least unless someone fixes it!).
diff -ur putty.orig/WINDOW.C putty/WINDOW.C
--- putty.orig/WINDOW.C	2004-03-26 14:18:42.000000000 -0800
+++ putty/WINDOW.C	2004-05-17 17:46:55.796875000 -0700
@@ -541,10 +541,15 @@
 	    exwinmode |= WS_EX_TOPMOST;
 	if (cfg.sunken_edge)
 	    exwinmode |= WS_EX_CLIENTEDGE;
+	if (cfg.transparency)
+	    exwinmode |= WS_EX_LAYERED;
 	hwnd = CreateWindowEx(exwinmode, appname, appname,
 			      winmode, CW_USEDEFAULT, CW_USEDEFAULT,
 			      guess_width, guess_height,
 			      NULL, NULL, inst, NULL);
+
+    if (cfg.transparency)
+        SetLayeredWindowAttributes(hwnd, 0, (255 * (100-cfg.transparency))/100, LWA_ALPHA);
     }
 
     /*
@@ -1887,6 +1892,16 @@
 		    else
 			nexflag &= ~(WS_EX_CLIENTEDGE);
 
+		    if(cfg.transparency < 0)
+			cfg.transparency = 0;
+		    else if(cfg.transparency > 100)
+			cfg.transparency = 100;
+
+		    if (cfg.transparency)
+			nexflag |= WS_EX_LAYERED;
+		    else
+			nexflag &= ~(WS_EX_LAYERED);
+
 		    nflg = flag;
 		    if (is_full_screen() ?
 			cfg.scrollbar_in_fullscreen : cfg.scrollbar)
@@ -1918,6 +1933,9 @@
 
 			init_lvl = 2;
 		    }
+
+		    if(cfg.transparency != prev_cfg.transparency)
+			SetLayeredWindowAttributes(hwnd, 0, (255 * (100-cfg.transparency))/100, LWA_ALPHA);
 		}
 
 		/* Oops */
diff -ur putty.orig/WINHELP.H putty/WINHELP.H
--- putty.orig/WINHELP.H	2004-04-24 21:05:02.000000000 -0700
+++ putty/WINHELP.H	2004-05-17 16:33:45.562500000 -0700
@@ -56,6 +56,7 @@
 #define WINHELP_CTX_appearance_title "appearance.title"
 #define WINHELP_CTX_appearance_hidemouse "appearance.hidemouse"
 #define WINHELP_CTX_appearance_border "appearance.border"
+#define WINHELP_CTX_appearance_transparency "appearance.transparency"
 #define WINHELP_CTX_connection_termtype "connection.termtype"
 #define WINHELP_CTX_connection_termspeed "connection.termspeed"
 #define WINHELP_CTX_connection_username "connection.username"
