Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/GeorefImage.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/GeorefImage.java	(revision 19386)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/GeorefImage.java	(revision 19387)
@@ -30,9 +30,9 @@
     // bbox of the georeferenced original image (raster only) (inclined if rotated and before cropping)
     // P[0] is bottom,left then next are clockwise. 
-    private EastNorth[] orgRaster = new EastNorth[4];
+    public EastNorth[] orgRaster = new EastNorth[4];
     // bbox of the georeferenced original image (raster only) after cropping 
-    private EastNorth[] orgCroppedRaster = new EastNorth[4];
+    public EastNorth[] orgCroppedRaster = new EastNorth[4];
     // angle with georeferenced original image after rotation (raster images only)(in radian)
-    private double angle = 0;
+    public double angle = 0;
 
     public BufferedImage image;
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSAdjustAction.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSAdjustAction.java	(revision 19386)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSAdjustAction.java	(revision 19387)
@@ -4,5 +4,7 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.Color;
 import java.awt.Cursor;
+import java.awt.Graphics2D;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
@@ -16,4 +18,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.actions.mapmode.MapMode;
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -30,5 +33,6 @@
     private EastNorth prevEastNorth;
     enum Mode { moveXY, moveZ, rotate}
-    private Mode mode = null;
+    private static Mode mode = null;
+    private static EastNorth[] croppedRaster = new EastNorth[5];;
 
     public WMSAdjustAction(MapFrame mapFrame) {
@@ -60,4 +64,5 @@
                 Main.map.mapView.addMouseMotionListener(this);
                 rasterMoved = false;
+                selectedLayer.adjustModeEnabled = true;
             } else {
                 JOptionPane.showMessageDialog(Main.parent,tr("This mode works only if active layer is\n"
@@ -81,4 +86,5 @@
         }
         modifiedLayers.clear();
+        selectedLayer.adjustModeEnabled = false;
         selectedLayer = null;
     }
@@ -104,15 +110,28 @@
     @Override public void mouseDragged(MouseEvent e) {
         EastNorth newEastNorth = Main.map.mapView.getEastNorth(e.getX(),e.getY());
-        if (mode == Mode.moveXY) {
-            displace(prevEastNorth, newEastNorth);
-        } else if (mode == Mode.moveZ) {
-            resize(newEastNorth);
-        } else if (mode == Mode.rotate) {
-            rotate(prevEastNorth, newEastNorth);
+        if (mode == Mode.rotate) {
+            rotateFrameOnly(prevEastNorth, newEastNorth);
+        } else {
+            if (mode == Mode.moveXY) {
+                displace(prevEastNorth, newEastNorth);
+            } else if (mode == Mode.moveZ) {
+                resize(newEastNorth);
+            } 
+            prevEastNorth = newEastNorth;
         }
         if (!modifiedLayers.contains(selectedLayer))
             modifiedLayers.add(selectedLayer);
         Main.map.mapView.repaint();
-        prevEastNorth = newEastNorth;
+    }
+    
+    public static void paintAdjustFrames(Graphics2D g, final MapView mv) {
+        if (mode == Mode.rotate && croppedRaster != null) {
+            g.setColor(Color.red);
+            for (int i=0; i<4; i++)
+                g.drawLine(mv.getPoint(croppedRaster[i]).x,
+                        mv.getPoint(croppedRaster[i]).y,
+                        mv.getPoint(croppedRaster[i+1]).x,
+                        mv.getPoint(croppedRaster[i+1]).y);
+        }
     }
 
@@ -136,6 +155,26 @@
     }
 
+    private void rotateFrameOnly(EastNorth start, EastNorth end) {
+        if (start != null && end != null) {
+            EastNorth pivot = selectedLayer.getRasterCenter();
+            double startAngle = Math.atan2(start.east()-pivot.east(), start.north()-pivot.north());
+            double endAngle = Math.atan2(end.east()-pivot.east(), end.north()-pivot.north());
+            double rotationAngle = endAngle - startAngle;
+            if (selectedLayer.images.get(0).orgCroppedRaster != null) {
+                for (int i=0; i<4; i++) {
+                    croppedRaster[i] = selectedLayer.images.get(0).orgCroppedRaster[i].rotate(pivot, rotationAngle);
+                }
+                croppedRaster[4] = croppedRaster[0];
+            }
+        }
+    }
+
     @Override public void mouseReleased(MouseEvent e) {
         //Main.map.mapView.repaint();
+        if (mode == Mode.rotate) {
+            EastNorth newEastNorth = Main.map.mapView.getEastNorth(e.getX(),e.getY());
+            rotate(prevEastNorth, newEastNorth);
+            Main.map.mapView.repaint();
+        }
         Main.map.mapView.setCursor(Cursor.getDefaultCursor());
         prevEastNorth = null;
Index: /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 19386)
+++ /applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/WMSLayer.java	(revision 19387)
@@ -81,4 +81,6 @@
 
     private JMenuItem saveAsPng;
+    
+    public boolean adjustModeEnabled;
 
     public WMSLayer() {
@@ -237,4 +239,7 @@
             paintCrosspieces(g, mv);
         }
+        if (this.adjustModeEnabled) {
+            WMSAdjustAction.paintAdjustFrames(g, mv);
+        }            
     }
 
