Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java	(revision 19948)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePreferenceSetting.java	(revision 19949)
@@ -35,4 +35,6 @@
 
     private JCheckBox drawBoundaries = new JCheckBox(tr("Draw boundaries of downloaded data."));
+
+    private JComboBox imageInterpolationMethod = new JComboBox();
 
     private JCheckBox disableImageCropping = new JCheckBox(tr("Disable image cropping during georeferencing."));
@@ -121,4 +123,19 @@
         drawBoundaries.setToolTipText(tr("Draw a rectangle around downloaded data from WMS server."));
         cadastrewms.add(drawBoundaries, GBC.eop().insets(0, 0, 0, 5));
+
+        // option to select image zooming interpolation method
+        JLabel jLabelImageZoomInterpolation = new JLabel(tr("Image zoom interpolation:"));
+        cadastrewms.add(jLabelImageZoomInterpolation, GBC.std().insets(0, 0, 10, 0));
+        imageInterpolationMethod.addItem(tr("Nearest-Neighbor (fastest) [ Default ]"));
+        imageInterpolationMethod.addItem(tr("Bilinear (fast)"));
+        imageInterpolationMethod.addItem(tr("Bicubic (slow)"));
+        String savedImageInterpolationMethod = Main.pref.get("cadastrewms.imageInterpolation", "standard");
+        if (savedImageInterpolationMethod.equals("bilinear")) 
+            imageInterpolationMethod.setSelectedIndex(1);
+        else if (savedImageInterpolationMethod.equals("bicubic")) 
+            imageInterpolationMethod.setSelectedIndex(2);
+        else
+            imageInterpolationMethod.setSelectedIndex(0);
+        cadastrewms.add(imageInterpolationMethod, GBC.eol().fill(GBC.HORIZONTAL).insets(5, 5, 200, 5));
 
         // separator
@@ -242,4 +259,10 @@
         Main.pref.put("cadastrewms.brightness", Float.toString((float)sliderTrans.getValue()/10));
         Main.pref.put("cadastrewms.drawBoundaries", drawBoundaries.isSelected());
+        if (imageInterpolationMethod.getSelectedIndex() == 2)
+            Main.pref.put("cadastrewms.imageInterpolation", "bicubic");
+        else if (imageInterpolationMethod.getSelectedIndex() == 1)
+            Main.pref.put("cadastrewms.imageInterpolation", "bilinear");
+        else 
+            Main.pref.put("cadastrewms.imageInterpolation", "standard");
         if (grabMultiplier1.isSelected())
             Main.pref.put("cadastrewms.scale", Scale.X1.toString());
Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 19948)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 19949)
@@ -10,4 +10,5 @@
 import java.awt.Image;
 import java.awt.Point;
+import java.awt.RenderingHints;
 import java.awt.Toolkit;
 import java.awt.image.BufferedImage;
@@ -234,7 +235,17 @@
     public void paint(Graphics2D g, final MapView mv, Bounds bounds) {
         synchronized(this){
+            Object savedInterpolation = g.getRenderingHint(RenderingHints.KEY_INTERPOLATION);
+            if (savedInterpolation == null) savedInterpolation = RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR;
+            String interpolation = Main.pref.get("cadastrewms.imageInterpolation", "Standard");
+            if (interpolation.equals("bilinear"))
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
+            else if (interpolation.equals("bicubic"))
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
+            else
+                g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
             for (GeorefImage img : images)
                 img.paint(g, mv, CadastrePlugin.backgroundTransparent,
                         CadastrePlugin.transparency, CadastrePlugin.drawBoundaries);
+            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, savedInterpolation);
         }
         if (this.isRaster) {
