Index: /applications/editors/josm/plugins/piclayer/build.xml
===================================================================
--- /applications/editors/josm/plugins/piclayer/build.xml	(revision 27146)
+++ /applications/editors/josm/plugins/piclayer/build.xml	(revision 27147)
@@ -22,5 +22,5 @@
 -->
 <project name="PicLayer" default="dist" basedir=".">
-    <property name="commit.message" value="PicLayer - fixing #7075.1"/>
+    <property name="commit.message" value="PicLayer - fixing issues like #6068, #6123, #5002"/>
     <property name="plugin.main.version" value="4549"/>
     <!--
Index: /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java
===================================================================
--- /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java	(revision 27146)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/actions/newlayer/NewLayerFromFileAction.java	(revision 27147)
@@ -62,11 +62,11 @@
 
             if ("zip".equalsIgnoreCase(fileExtension)) return true;
-            // Unfortunately, getReaderFormatNames does not always return ALL extensions in 
+            // Unfortunately, getReaderFormatNames does not always return ALL extensions in
             // both lower and upper case, so we can not do a search in the array
             for (String e: supportedExtensions)
-                if ( e.toLowerCase().equals(fileExtension) ) {
+                if ( e.equalsIgnoreCase(fileExtension) ) {
                     return true;
                 }
-                    
+
             return false;
         }
@@ -75,7 +75,19 @@
         @Override
         public String getDescription() {
-            return tr("Supported image files");
+            return tr("Supported image files + *.zip");
         }
 
+    }
+
+    private class AllFilesFilter extends FileFilter {
+        @Override
+        public String getDescription() {
+            return tr("All Files");
+        }
+
+        @Override
+        public boolean accept(File f) {
+            return true;
+        }
     }
 
@@ -90,4 +102,5 @@
      * Action handler
      */
+    @Override
     public void actionPerformed(ActionEvent arg0) {
 
@@ -95,6 +108,8 @@
         JFileChooser fc = new JFileChooser(Main.pref.get(m_lastdirprefname));
         fc.setAcceptAllFileFilterUsed( false );
-        fc.setFileFilter( new ImageFileFilter() );
-        fc.setMultiSelectionEnabled(true); 
+        //fc.setFileFilter( new ImageFileFilter() );
+        fc.addChoosableFileFilter(new ImageFileFilter());
+        fc.addChoosableFileFilter(new AllFilesFilter());
+        fc.setMultiSelectionEnabled(true);
         int result = fc.showOpenDialog( Main.parent );
 
@@ -112,5 +127,5 @@
             for(File file : fc.getSelectedFiles() ) {
                 // TODO: we need a progress bar here, it can take quite some time
-                
+
                 // Create layer from file
                 PicLayerFromFile layer = new PicLayerFromFile( file );
@@ -126,8 +141,8 @@
                 }
                 Main.pref.put(m_lastdirprefname, file.getParent());
-        
+
                 Main.main.addLayer( layer );
                 Main.map.mapView.moveLayer(layer, newLayerPos++);
-                
+
                 if ( fc.getSelectedFiles().length == 1 && Main.pref.getInteger("piclayer.zoom-on-load", 1) != 0 ) {
                     // if we are loading a single picture file, zoom on it, so that the user can see something
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 27146)
+++ /applications/editors/josm/plugins/piclayer/src/org/openstreetmap/josm/plugins/piclayer/layer/PicLayerAbstract.java	(revision 27147)
@@ -384,17 +384,17 @@
         AffineTransform transform;
 
-        double pos_x = Double.valueOf(props.getProperty(POSITION_X));
-        double pos_y = Double.valueOf(props.getProperty(POSITION_Y));
+        double pos_x = Double.valueOf(props.getProperty(POSITION_X, "0"));
+        double pos_y = Double.valueOf(props.getProperty(POSITION_Y, "0"));
 
         imagePosition = new EastNorth(pos_x, pos_y);
-        initialImageScale = Double.valueOf(props.getProperty(INITIAL_SCALE)); //in_scale
+        initialImageScale = Double.valueOf(props.getProperty(INITIAL_SCALE, "1")); //in_scale
         if (props.containsKey(SCALEX)) {// old format
-            double in_pos_x = Double.valueOf( props.getProperty(INITIAL_POS_X));
-            double in_pos_y = Double.valueOf( props.getProperty(INITIAL_POS_Y));
-            double angle = Double.valueOf( props.getProperty(ANGLE));
-            double scale_x = Double.valueOf( props.getProperty(SCALEX));
-            double scale_y = Double.valueOf( props.getProperty(SCALEY));
-            double shear_x = Double.valueOf( props.getProperty(SHEARX));
-            double shear_y = Double.valueOf( props.getProperty(SHEARY));
+            double in_pos_x = Double.valueOf(props.getProperty(INITIAL_POS_X, "0"));
+            double in_pos_y = Double.valueOf(props.getProperty(INITIAL_POS_Y, "0"));
+            double angle = Double.valueOf(props.getProperty(ANGLE, "0"));
+            double scale_x = Double.valueOf(props.getProperty(SCALEX, "1"));
+            double scale_y = Double.valueOf(props.getProperty(SCALEY, "1"));
+            double shear_x = Double.valueOf(props.getProperty(SHEARX, "0"));
+            double shear_y = Double.valueOf(props.getProperty(SHEARY, "0"));
 
             initialImagePosition.setLocation(in_pos_x, in_pos_y);
@@ -407,10 +407,10 @@
             // initialize matrix
             double[] matrix = new double[6];
-            matrix[0] = Double.parseDouble(props.getProperty(MATRIXm00));
-            matrix[1] = Double.parseDouble(props.getProperty(MATRIXm01));
-            matrix[2] = Double.parseDouble(props.getProperty(MATRIXm10));
-            matrix[3] = Double.parseDouble(props.getProperty(MATRIXm11));
-            matrix[4] = Double.parseDouble(props.getProperty(MATRIXm02));
-            matrix[5] = Double.parseDouble(props.getProperty(MATRIXm12));
+            matrix[0] = Double.parseDouble(props.getProperty(MATRIXm00, "0"));
+            matrix[1] = Double.parseDouble(props.getProperty(MATRIXm01, "0"));
+            matrix[2] = Double.parseDouble(props.getProperty(MATRIXm10, "0"));
+            matrix[3] = Double.parseDouble(props.getProperty(MATRIXm11, "0"));
+            matrix[4] = Double.parseDouble(props.getProperty(MATRIXm02, "0"));
+            matrix[5] = Double.parseDouble(props.getProperty(MATRIXm12, "0"));
 
             transform = new AffineTransform(matrix);
