Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryLayer.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryLayer.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryLayer.java	(revision 24615)
@@ -8,4 +8,8 @@
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
+import java.awt.image.BufferedImage;
+import java.awt.image.BufferedImageOp;
+import java.awt.image.ConvolveOp;
+import java.awt.image.Kernel;
 import java.util.List;
 
@@ -41,8 +45,11 @@
     protected double dy = 0.0;
 
+    protected int sharpenLevel;
+
     public ImageryLayer(ImageryInfo info) {
         super(info.getName());
         this.info = info;
         this.mv = Main.map.mapView;
+        this.sharpenLevel = ImageryPreferences.PROP_SHARPEN_LEVEL.get();
     }
 
@@ -175,3 +182,18 @@
     }
 
+    public BufferedImage sharpenImage(BufferedImage img) {
+        if (sharpenLevel <= 0) return img;
+        int width = img.getWidth(null);
+        int height = img.getHeight(null);
+        BufferedImage tmp = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+        tmp.getGraphics().drawImage(img, 0, 0, null);
+        Kernel kernel;
+        if (sharpenLevel == 1) {
+            kernel = new Kernel(2, 2, new float[] { 4, -1, -1, -1});
+        } else {
+            kernel = new Kernel(3, 3, new float[] { -1, -1, -1, -1, 9, -1, -1, -1, -1});
+        }
+        BufferedImageOp op = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
+        return op.filter(tmp, null);
+    }
 }
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPlugin.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPlugin.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPlugin.java	(revision 24615)
@@ -57,5 +57,5 @@
     /** RemoteControlPlugin older than this SVN revision is not compatible */
     final int REMOTECONTROL_MIN_REVISION = 22734;
-    /** WMSPlugin needs this specific API major version of RemoteControlPlugin */
+    /** Imagery Plugin needs this specific API major version of RemoteControlPlugin */
     final int REMOTECONTROL_NEED_API_MAJOR = 1;
     /** All API minor versions starting from this should be compatible */
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferenceEditor.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferenceEditor.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferenceEditor.java	(revision 24615)
@@ -38,4 +38,7 @@
     ImageryProvidersPanel imageryProviders;
 
+    WMSAdapter wmsAdapter = ImageryPlugin.wmsAdapter;
+    ImageryPlugin plugin = ImageryPlugin.instance;
+
     // Common settings
     private Color colFadeColor;
@@ -43,5 +46,6 @@
     private JSlider fadeAmount = new JSlider(0, 100);
     private JCheckBox remoteCheckBox;
-    boolean allowRemoteControl = true;
+    private JComboBox sharpen;
+    private boolean allowRemoteControl = true;
 
     // WMS Settings
@@ -51,6 +55,4 @@
     JSpinner spinNorth;
     JSpinner spinSimConn;
-    WMSAdapter wmsAdapter = ImageryPlugin.wmsAdapter;
-    ImageryPlugin plugin = ImageryPlugin.instance;
 
     //TMS settings controls
@@ -98,4 +100,13 @@
         p.add(remoteCheckBox,GBC.eol().fill(GBC.HORIZONTAL));
 
+        this.sharpen = new JComboBox(new String[] {
+                tr("None"),
+                tr("Soft"),
+                tr("Strong")});
+        p.add(new JLabel(tr("Sharpen (requires layer re-add): ")));
+        p.add(GBC.glue(5, 0), GBC.std().fill(GBC.HORIZONTAL));
+        p.add(this.sharpen, GBC.std().fill(GBC.HORIZONTAL));
+        this.sharpen.setSelectedIndex(ImageryPreferences.PROP_SHARPEN_LEVEL.get());
+
         return p;
     }
@@ -109,5 +120,5 @@
                 "webkit-image-gtk {0}"});
         browser.setEditable(true);
-        browser.setSelectedItem(Main.pref.get("wmsplugin.browser", "webkit-image {0}"));
+        browser.setSelectedItem(wmsAdapter.PROP_BROWSER.get());
         p.add(new JLabel(tr("Downloader:")), GBC.eol().fill(GBC.HORIZONTAL));
         p.add(browser);
@@ -219,6 +230,5 @@
         allowRemoteControl = remoteCheckBox.getModel().isSelected();
 
-        Main.pref.put("wmsplugin.browser", browser.getEditor().getItem().toString());
-
+        Main.pref.put("imagery.wms.browser", browser.getEditor().getItem().toString());
 
         TMSPreferences.PROP_DEFAULT_AUTOZOOM.put(this.autozoomActive.isSelected());
@@ -227,7 +237,8 @@
         TMSPreferences.setMinZoomLvl((Integer)this.minZoomLvl.getValue());
 
-        ImageryPreferences.PROP_REMOTE_CONTROL.put(allowRemoteControl);
         ImageryPreferences.PROP_FADE_AMOUNT.put(this.fadeAmount.getValue());
         ImageryPreferences.setFadeColor(this.colFadeColor);
+        ImageryPreferences.PROP_REMOTE_CONTROL.put(allowRemoteControl);
+        ImageryPreferences.PROP_SHARPEN_LEVEL.put(sharpen.getSelectedIndex());
 
         return false;
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferences.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferences.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/ImageryPreferences.java	(revision 24615)
@@ -8,7 +8,7 @@
 
 public class ImageryPreferences {
-
     public static final BooleanProperty PROP_REMOTE_CONTROL = new BooleanProperty("imagery.remotecontrol", true);
     public static final IntegerProperty PROP_FADE_AMOUNT = new IntegerProperty("imagery.fade_amount", 0);
+    public static final IntegerProperty PROP_SHARPEN_LEVEL = new IntegerProperty("imagery.sharpen_level", 0);
 
     public static Color getFadeColor() {
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/tms/TMSLayer.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/tms/TMSLayer.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/tms/TMSLayer.java	(revision 24615)
@@ -53,7 +53,7 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.plugins.imagery.ImageryInfo;
+import org.openstreetmap.josm.plugins.imagery.ImageryInfo.ImageryType;
 import org.openstreetmap.josm.plugins.imagery.ImageryLayer;
 import org.openstreetmap.josm.plugins.imagery.ImageryPreferences;
-import org.openstreetmap.josm.plugins.imagery.ImageryInfo.ImageryType;
 
 /**
@@ -85,4 +85,5 @@
         Main.map.repaint(100);
         tileRequestsOutstanding.remove(tile);
+        if (sharpenLevel != 0) tile.setImage(sharpenImage(tile.getImage()));
         if (debug)
             out("tileLoadingFinished() tile: " + tile + " success: " + success);
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/GeorefImage.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/GeorefImage.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/GeorefImage.java	(revision 24615)
@@ -97,4 +97,5 @@
         }
         default:
+            this.image = layer.sharpenImage(this.image);
             break;
         }
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/HTMLGrabber.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/HTMLGrabber.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/HTMLGrabber.java	(revision 24615)
@@ -10,7 +10,7 @@
 import javax.imageio.ImageIO;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.io.CacheFiles;
+import org.openstreetmap.josm.plugins.imagery.ImageryPlugin;
 
 public class HTMLGrabber extends WMSGrabber {
@@ -27,5 +27,5 @@
         ArrayList<String> cmdParams = new ArrayList<String>();
         StringTokenizer st = new StringTokenizer(MessageFormat.format(
-                Main.pref.get("wmsplugin.browser", "webkit-image {0}"), urlstring));
+                ImageryPlugin.wmsAdapter.PROP_BROWSER.get(), urlstring));
         while( st.hasMoreTokens() )
             cmdParams.add(st.nextToken());
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSAdapter.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSAdapter.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSAdapter.java	(revision 24615)
@@ -4,4 +4,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.data.preferences.StringProperty;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.io.CacheFiles;
@@ -14,8 +15,9 @@
     CacheFiles cache = new CacheFiles("wmsplugin");
 
-    public final IntegerProperty PROP_SIMULTANEOUS_CONNECTIONS = new IntegerProperty("wmsplugin.simultaneousConnections", 3);
-    public final BooleanProperty PROP_OVERLAP = new BooleanProperty("wmsplugin.url.overlap", false);
-    public final IntegerProperty PROP_OVERLAP_EAST = new IntegerProperty("wmsplugin.url.overlapEast", 14);
-    public final IntegerProperty PROP_OVERLAP_NORTH = new IntegerProperty("wmsplugin.url.overlapNorth", 4);
+    public final StringProperty PROP_BROWSER = new StringProperty("imagery.wms.browser", "webkit-image {0}");
+    public final IntegerProperty PROP_SIMULTANEOUS_CONNECTIONS = new IntegerProperty("imagery.wms.simultaneousConnections", 3);
+    public final BooleanProperty PROP_OVERLAP = new BooleanProperty("imagery.wms.overlap", false);
+    public final IntegerProperty PROP_OVERLAP_EAST = new IntegerProperty("imagery.wms.overlapEast", 14);
+    public final IntegerProperty PROP_OVERLAP_NORTH = new IntegerProperty("imagery.wms.overlapNorth", 4);
 
     protected void initExporterAndImporter() {
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSGrabber.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSGrabber.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSGrabber.java	(revision 24615)
@@ -170,7 +170,7 @@
         if(layer.getInfo().getCookies() != null && !layer.getInfo().getCookies().equals(""))
             conn.setRequestProperty("Cookie", layer.getInfo().getCookies());
-        conn.setRequestProperty("User-Agent", Main.pref.get("wmsplugin.user_agent", Version.getInstance().getAgentString()));
-        conn.setConnectTimeout(Main.pref.getInteger("wmsplugin.timeout.connect", 30) * 1000);
-        conn.setReadTimeout(Main.pref.getInteger("wmsplugin.timeout.read", 30) * 1000);
+        conn.setRequestProperty("User-Agent", Main.pref.get("imagery.wms.user_agent", Version.getInstance().getAgentString()));
+        conn.setConnectTimeout(Main.pref.getInteger("imagery.wms.timeout.connect", 30) * 1000);
+        conn.setReadTimeout(Main.pref.getInteger("imagery.wms.timeout.read", 30) * 1000);
 
         String contentType = conn.getHeaderField("Content-Type");
Index: /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSLayer.java
===================================================================
--- /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSLayer.java	(revision 24614)
+++ /applications/editors/josm/plugins/imagery/src/org/openstreetmap/josm/plugins/imagery/wms/WMSLayer.java	(revision 24615)
@@ -54,5 +54,5 @@
 public class WMSLayer extends ImageryLayer implements PreferenceChangedListener {
 
-    public static final BooleanProperty PROP_ALPHA_CHANNEL = new BooleanProperty("wmsplugin.alpha_channel", true);
+    public static final BooleanProperty PROP_ALPHA_CHANNEL = new BooleanProperty("imagery.wms.alpha_channel", true);
     WMSAdapter plugin = ImageryPlugin.wmsAdapter;
 
