Index: /applications/editors/josm/plugins/piclayer/build.xml
===================================================================
--- /applications/editors/josm/plugins/piclayer/build.xml	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/build.xml	(revision 27168)
@@ -22,5 +22,5 @@
 -->
 <project name="PicLayer" default="dist" basedir=".">
-    <property name="commit.message" value="PicLayer - removed hiding buttons from PicLayer main menu - this is in core responsibility now"/>
+    <property name="commit.message" value="PicLayer - now markers are visible only when they are needed - active Layer and transform/add marker mapmode"/>
     <property name="plugin.main.version" value="4549"/>
     <!--
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/PicLayerPlugin.java	(revision 27168)
@@ -130,4 +130,6 @@
                 btn.setVisible(false);
             }
+            if (oldLayer != null)
+                ((PicLayerAbstract)oldLayer).setDrawPoints(false);
         }
         if (!oldPic && newPic) { // enter picture layer - reset visibility of controls
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/GenericPicTransformAction.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/GenericPicTransformAction.java	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/GenericPicTransformAction.java	(revision 27168)
@@ -54,5 +54,5 @@
 	    if ( Main.map.mapView.getActiveLayer() instanceof PicLayerAbstract ) {
 	        currentLayer = (PicLayerAbstract)Main.map.mapView.getActiveLayer();
-	
+
 	        if ( currentLayer != null && e.getButton() == MouseEvent.BUTTON1 ) {
 	            isDragging = true;
@@ -88,5 +88,12 @@
 		return l instanceof PicLayerAbstract;
 	}
-	
-	
+
+	protected void updateDrawPoints(boolean value) {
+	    Layer active = Main.map.mapView.getActiveLayer();
+        if (active instanceof PicLayerAbstract) {
+            ((PicLayerAbstract)active).setDrawPoints(value);
+        }
+        Main.map.mapView.repaint();
+	}
+
 }
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/MovePointAction.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/MovePointAction.java	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/MovePointAction.java	(revision 27168)
@@ -32,10 +32,10 @@
 		}
 	}
-	
+
 	@Override
 	public void mouseClicked(MouseEvent e) {
 		if (currentLayer == null)
 			return;
-		
+
 		try {
 			Point2D pressed = currentLayer.transformPoint(e.getPoint());
@@ -47,3 +47,15 @@
 		Main.map.mapView.repaint();
 	}
+
+	@Override
+	public void enterMode() {
+	    super.enterMode();
+	    updateDrawPoints(true);
+	}
+
+	@Override
+	public void exitMode() {
+	    super.exitMode();
+	    updateDrawPoints(false);
+	}
 }
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/TransformPointAction.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/TransformPointAction.java	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/transform/affine/TransformPointAction.java	(revision 27168)
@@ -34,4 +34,14 @@
 		}
 	}
+    @Override
+    public void enterMode() {
+        super.enterMode();
+        updateDrawPoints(true);
+    }
 
+    @Override
+    public void exitMode() {
+        super.exitMode();
+        updateDrawPoints(false);
+    }
 }
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java	(revision 27167)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java	(revision 27168)
@@ -77,4 +77,10 @@
     private Icon layerIcon = null;
 
+    private boolean drawPoints = true;
+
+    public void setDrawPoints(boolean value) {
+        drawPoints = value;
+    }
+
     private PictureTransform transformer;
 
@@ -239,21 +245,22 @@
                 );
             }
-            // draw points for selection
-            Graphics2D gPoints = (Graphics2D)g2.create();
-
-            gPoints.translate(pic_offset_x, pic_offset_y);
-
-            gPoints.setColor(Color.RED); // red color for points output
-
-            AffineTransform tr = AffineTransform.getScaleInstance(scalex, scaley);
-            tr.concatenate(transformer.getTransform());
-
-            for (Point2D p : transformer.getOriginPoints()) {
-               Point2D trP = tr.transform(p, null);
-               int x = (int)trP.getX(), y = (int)trP.getY();
-               gPoints.drawOval(x-2, y-2, 5, 5);
-               gPoints.drawImage(pinImage, x, y, null);
+            if (drawPoints ) {
+                // draw points for selection
+                Graphics2D gPoints = (Graphics2D)g2.create();
+
+                gPoints.translate(pic_offset_x, pic_offset_y);
+
+                gPoints.setColor(Color.RED); // red color for points output
+
+                AffineTransform tr = AffineTransform.getScaleInstance(scalex, scaley);
+                tr.concatenate(transformer.getTransform());
+
+                for (Point2D p : transformer.getOriginPoints()) {
+                   Point2D trP = tr.transform(p, null);
+                   int x = (int)trP.getX(), y = (int)trP.getY();
+                   gPoints.drawOval(x-2, y-2, 5, 5);
+                   gPoints.drawImage(pinImage, x, y, null);
+                }
             }
-
         } else {
             // TODO: proper logging
