Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java	(revision 13648)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/GeorefImage.java	(revision 13652)
@@ -3,6 +3,11 @@
 import java.awt.Dimension;
 import java.awt.Graphics;
+import java.awt.Image;
 import java.awt.Point;
+import java.awt.Toolkit;
 import java.awt.image.BufferedImage;
+import java.awt.image.FilteredImageSource;
+import java.awt.image.ImageProducer;
+import java.awt.image.RGBImageFilter;
 import java.io.IOException;
 import java.io.ObjectInputStream;
@@ -12,4 +17,5 @@
 import javax.imageio.ImageIO;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.NavigatableComponent;
@@ -69,9 +75,16 @@
         }
 
+        boolean alphaChannel = Main.pref.getBoolean("wmsplugin.alpha_channel");
+        Image ppImg = image;
+        if(!alphaChannel) {
+            // set alpha value to 255
+            ppImg = clearAlpha(image);
+        }
+           
         // We haven't got a saved resized copy, so resize and cache it        
-        reImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
-        reImg.getGraphics().drawImage(image,
+        reImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
+        reImg.getGraphics().drawImage(ppImg,
             0, 0, width, height, // dest
-            0, 0, image.getWidth(), image.getHeight(), // src
+            0, 0, ppImg.getWidth(null), ppImg.getHeight(null), // src
             null);
 
@@ -95,3 +108,16 @@
             ImageIO.write(image, "png", ImageIO.createImageOutputStream(out));
     }
+
+    private Image clearAlpha(Image img) {
+		ImageProducer ip = img.getSource();
+		RGBImageFilter filter = new RGBImageFilter() {
+			public int filterRGB(int x, int y, int rgb) {
+				return rgb | 0xff000000;
+			}
+		};
+		ImageProducer filt_ip = new FilteredImageSource(ip, filter);
+		Image out_img = Toolkit.getDefaultToolkit().createImage(filt_ip);
+
+		return out_img;
+	}
 }
Index: applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java
===================================================================
--- applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 13648)
+++ applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSLayer.java	(revision 13652)
@@ -3,5 +3,4 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.lang.Math;
 import java.awt.Component;
 import java.awt.Graphics;
@@ -13,10 +12,12 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import javax.swing.AbstractAction;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JFileChooser;
-import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
@@ -26,16 +27,13 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
-import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.gui.MapView;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.data.coor.EastNorth;
 
 /**
@@ -61,5 +59,5 @@
     protected GeorefImage[][] images = new GeorefImage[dax][day];
     JCheckBoxMenuItem startstop = new JCheckBoxMenuItem(tr("Automatic downloading"), true);
-
+    protected JCheckBoxMenuItem alphaChannel = new JCheckBoxMenuItem(new ToggleAlphaAction());
     protected String baseURL;
     protected final int serializeFormatVersion = 4;
@@ -75,4 +73,5 @@
     public WMSLayer(String name, String baseURL) {
         super(name);
+        alphaChannel.setSelected(Main.pref.getBoolean("wmsplugin.alpha_channel"));
         background = true; /* set global background variable */
         initializeImages();
@@ -81,5 +80,5 @@
         mv = Main.map.mapView;
         getPPD();
-
+        
         executor = Executors.newFixedThreadPool(3);
     }
@@ -166,5 +165,5 @@
             return;
         }
-
+        
         for(int x = bminx; x<bmaxx; ++x)
             for(int y = bminy; y<bmaxy; ++y){
@@ -203,4 +202,5 @@
                 new JSeparator(),
                 startstop,
+                alphaChannel,
                 new JMenuItem(new changeResolutionAction()),
                 new JMenuItem(new downloadAction()),
@@ -237,4 +237,16 @@
             getPPD();
             mv.repaint();
+        }
+    }
+    
+    public class ToggleAlphaAction extends AbstractAction {
+        public ToggleAlphaAction() {
+            super(tr("Alpha channel"));
+        }
+        public void actionPerformed(ActionEvent ev) {
+            JCheckBoxMenuItem checkbox = (JCheckBoxMenuItem) ev.getSource();
+            boolean alphaChannel = checkbox.isSelected();
+            Main.pref.put("wmsplugin.alpha_channel", alphaChannel);
+            Main.map.repaint();
         }
     }
