Index: applications/editors/josm/plugins/ImportImagePlugin/build.xml
===================================================================
--- applications/editors/josm/plugins/ImportImagePlugin/build.xml	(revision 26174)
+++ applications/editors/josm/plugins/ImportImagePlugin/build.xml	(revision 26413)
@@ -1,3 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 ** This is a template build file for a JOSM  plugin.
@@ -29,36 +29,41 @@
 -->
 <project name="ImportImagePlugin" default="dist" basedir=".">
-    <!-- enter the SVN commit message -->
-    <property name="commit.message" value="use consistent plugin name (don't mix up the words)"/>
-    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="4065"/>
-    <!--
+
+	<!-- enter the SVN commit message -->
+	<property name="commit.message" value="use consistent plugin name (don't mix up the words)" />
+	<!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
+	<property name="plugin.main.version" value="3376" />
+
+
+	<!--
       ************************************************
       ** should not be necessary to change the following properties
      -->
-    <property name="josm" location="../../core/dist/josm-custom.jar"/>
-    <property name="plugin.build.dir" value="build"/>
-    <property name="plugin.src.dir" value="src"/>
-    <!-- this is the directory where the plugin jar is copied to -->
-    <property name="plugin.dist.dir" value="../../dist"/>
-    <property name="ant.build.javac.target" value="1.5"/>
-    <property name="plugin.dist.dir" value="../../dist"/>
-    <property name="plugin.jar" value="${plugin.dist.dir}/${ant.project.name}.jar"/>
-    <!--
+	<property name="josm"                   location="../../core/dist/josm-custom.jar"/>
+	<property name="plugin.build.dir"       value="build"/>
+	<property name="plugin.src.dir"         value="src"/>
+	<!-- this is the directory where the plugin jar is copied to -->
+	<property name="plugin.dist.dir"        value="../../dist"/>
+	<property name="ant.build.javac.target" value="1.5"/>
+	<property name="plugin.dist.dir"        value="../../dist"/>
+	<property name="plugin.jar"             value="${plugin.dist.dir}/${ant.project.name}.jar"/>
+
+	<!--
     **********************************************************
     ** init - initializes the build
     **********************************************************
     -->
-    <target name="init">
-        <mkdir dir="${plugin.build.dir}"/>
-    </target>
-    <!--
+	<target name="init">
+		<mkdir dir="${plugin.build.dir}"/>
+	</target>
+
+	<!--
     **********************************************************
     ** compile - complies the source tree
     **********************************************************
     -->
-    <target name="compile" depends="init">
-        <echo message="compiling sources for  ${plugin.jar} ... "/>
-        <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}">
+	<target name="compile" depends="init">
+		<echo message="compiling sources for  ${plugin.jar} ... "/>
+		<javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}">
             <classpath>
                 <pathelement location="${josm}"/>
@@ -67,40 +72,40 @@
                 </fileset>
             </classpath>
-            <compilerarg value="-Xlint:deprecation"/>
-            <compilerarg value="-Xlint:unchecked"/>
-        </javac>
-    </target>
-    <!--
+			<compilerarg value="-Xlint:deprecation"/>
+			<compilerarg value="-Xlint:unchecked"/>
+		</javac>
+	</target>
+
+	<!--
     **********************************************************
     ** dist - creates the plugin jar
     **********************************************************
     -->
-    <target name="dist" depends="compile,revision">
-        <echo message="creating ${ant.project.name}.jar ... "/>
-        <copy todir="${plugin.build.dir}/lib">
-            <fileset dir="lib">
-                <not>
-                    <filename name="log4j-1.2.12.jar"/>
-                </not>
-            </fileset>
-        </copy>
+	<target name="dist" depends="compile,revision">
+		<echo message="creating ${ant.project.name}.jar ... "/>
+		
+		<copy todir="${plugin.build.dir}/lib">
+			<fileset dir="lib">
+				  <not>
+				    <filename name="log4j-1.2.12.jar"/>
+				  </not>
+			</fileset>
+		</copy>
         <unjar src="lib/log4j-1.2.12.jar" dest="${plugin.build.dir}"/>
-        <copy todir="${plugin.build.dir}/images">
-            <fileset dir="images"/>
-        </copy>
-        <copy todir="${plugin.build.dir}/data">
-            <fileset dir="data"/>
-        </copy>
-        <copy todir="${plugin.build.dir}/resources">
-            <fileset dir="resources"/>
-        </copy>
-        <copy todir="${plugin.build.dir}">
-            <fileset dir=".">
-                <include name="README"/>
-                <include name="LICENSE"/>
-            </fileset>
-        </copy>
-        <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
-            <!--
+		<copy todir="${plugin.build.dir}/images">
+			<fileset dir="images"/>
+		</copy>
+		<copy todir="${plugin.build.dir}/resources">
+			<fileset dir="resources"/>
+		</copy>
+		<copy todir="${plugin.build.dir}">
+			<fileset dir=".">
+				<include name="README" />
+				<include name="LICENSE" />
+			</fileset>
+		</copy>
+        	
+		<jar destfile="${plugin.jar}" basedir="${plugin.build.dir}">
+			<!--
         ************************************************
         ** configure these properties. Most of them will be copied to the plugins
@@ -110,5 +115,6 @@
         ************************************************
     -->
-            <manifest>
+
+			<manifest>
                 <attribute name="Author" value="Christoph Beekmans, Fabian Kowitz, Anna Robaszkiewicz, Oliver Kuhn, Martin Ulitzny"/>
                 <attribute name="Plugin-Class" value="org.openstreetmap.josm.plugins.ImportImagePlugin.ImportImagePlugin"/>
@@ -118,8 +124,9 @@
                 <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
-            </manifest>
-        </jar>
-    </target>
-    <!--
+			</manifest>
+		</jar>
+	</target>
+
+	<!--
     **********************************************************
     ** revision - extracts the current revision number for the
@@ -128,136 +135,149 @@
     **********************************************************
     -->
-    <target name="revision">
-        <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="."/>
-        </exec>
-        <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
-        <delete file="REVISION"/>
-    </target>
-    <!--
+	<target name="revision">
+
+		<exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="info"/>
+			<arg value="--xml"/>
+			<arg value="."/>
+		</exec>
+		<xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+		<delete file="REVISION"/>
+	</target>
+
+	<!--
     **********************************************************
     ** clean - clean up the build environment
     **********************************************************
     -->
-    <target name="clean">
-        <delete dir="${plugin.build.dir}"/>
-        <delete file="${plugin.jar}"/>
-    </target>
-    <!--
+	<target name="clean">
+		<delete dir="${plugin.build.dir}"/>
+		<delete file="${plugin.jar}"/>
+	</target>
+
+	<!--
     **********************************************************
     ** install - install the plugin in your local JOSM installation
     **********************************************************
     -->
-    <target name="install" depends="dist">
-        <property environment="env"/>
-        <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins">
-            <and>
-                <os family="windows"/>
-            </and>
-        </condition>
-        <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/>
-    </target>
-    <!--
-    ************************** Publishing the plugin *********************************** 
-    -->
-    <!--
-        ** extracts the JOSM release for the JOSM version in ../core and saves it in the 
-        ** property ${coreversion.info.entry.revision}
-        **
-        -->
-    <target name="core-info">
-        <exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="info"/>
-            <arg value="--xml"/>
-            <arg value="../../core"/>
-        </exec>
-        <xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/>
-        <echo>Building against core revision ${coreversion.info.entry.revision}.</echo>
-        <echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo>
-        <delete file="core.info.xml"/>
-    </target>
-    <!--
-        ** commits the source tree for this plugin
-        -->
-    <target name="commit-current">
-        <echo>Commiting the plugin source with message '${commit.message}' ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="commit"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="."/>
-        </exec>
-    </target>
-    <!--
-        ** updates (svn up) the source tree for this plugin
-        -->
-    <target name="update-current">
-        <echo>Updating plugin source ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="."/>
-        </exec>
-        <echo>Updating ${plugin.jar} ...</echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="up"/>
-            <arg value="../dist/${plugin.jar}"/>
-        </exec>
-    </target>
-    <!--
-        ** commits the plugin.jar 
-        -->
-    <target name="commit-dist">
-        <echo>
-    ***** Properties of published ${plugin.jar} *****
-    Commit message    : '${commit.message}'                 
-    Plugin-Mainversion: ${plugin.main.version}
-    JOSM build version: ${coreversion.info.entry.revision}
-    Plugin-Version    : ${version.entry.commit.revision}
-    ***** / Properties of published ${plugin.jar} *****                 
-                        
-    Now commiting ${plugin.jar} ...
-    </echo>
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
-            <env key="LANG" value="C"/>
-            <arg value="-m '${commit.message}'"/>
-            <arg value="commit"/>
-            <arg value="${plugin.jar}"/>
-        </exec>
-    </target>
-    <!-- ** make sure svn is present as a command line tool ** -->
-    <target name="ensure-svn-present">
-        <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code">
-            <env key="LANG" value="C"/>
-            <arg value="--version"/>
-        </exec>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system.">
-            <!-- return code not set at all? Most likely svn isn't installed -->
-            <condition>
-                <not>
-                    <isset property="svn.exit.code"/>
-                </not>
-            </condition>
-        </fail>
-        <fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system.">
-            <!-- error code from SVN? Most likely svn is not what we are looking on this system -->
-            <condition>
-                <isfailure code="${svn.exit.code}"/>
-            </condition>
-        </fail>
-    </target>
-    <target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist">
-    </target>
-    <target name="unjar-test">
+	<target name="install" depends="dist">
+		<property environment="env"/>
+		<condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins">
+			<and>
+				<os family="windows"/>
+			</and>
+		</condition>
+		<copy file="${plugin.jar}" todir="${josm.plugins.dir}"/>
+	</target>
+
+
+	<!--
+	************************** Publishing the plugin *********************************** 
+	-->
+	<!--
+		** extracts the JOSM release for the JOSM version in ../core and saves it in the 
+		** property ${coreversion.info.entry.revision}
+		**
+		-->
+	<target name="core-info">
+		<exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="info"/>
+			<arg value="--xml"/>
+			<arg value="../../core"/>
+		</exec>
+		<xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/>
+		<echo>Building against core revision ${coreversion.info.entry.revision}.</echo>
+		<echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo>
+		<delete file="core.info.xml" />
+	</target>
+
+	<!--
+		** commits the source tree for this plugin
+		-->
+	<target name="commit-current">
+		<echo>Commiting the plugin source with message '${commit.message}' ...</echo>
+		<exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="commit"/>
+			<arg value="-m '${commit.message}'"/>
+			<arg value="."/>
+		</exec>
+	</target>
+
+	<!--
+		** updates (svn up) the source tree for this plugin
+		-->
+	<target name="update-current">
+		<echo>Updating plugin source ...</echo>
+		<exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="up"/>
+			<arg value="."/>
+		</exec>
+		<echo>Updating ${plugin.jar} ...</echo>
+		<exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="up"/>
+			<arg value="../dist/${plugin.jar}"/>
+		</exec>
+	</target>
+
+	<!--
+		** commits the plugin.jar 
+		-->
+	<target name="commit-dist">
+		<echo>
+	***** Properties of published ${plugin.jar} *****
+	Commit message    : '${commit.message}'					
+	Plugin-Mainversion: ${plugin.main.version}
+	JOSM build version: ${coreversion.info.entry.revision}
+	Plugin-Version    : ${version.entry.commit.revision}
+	***** / Properties of published ${plugin.jar} *****					
+						
+	Now commiting ${plugin.jar} ...
+	</echo>
+		<exec append="true" output="svn.log" executable="svn" failifexecutionfails="false">
+			<env key="LANG" value="C"/>
+			<arg value="-m '${commit.message}'"/>
+			<arg value="commit"/>
+			<arg value="${plugin.jar}"/>
+		</exec>
+	</target>
+
+	<!-- ** make sure svn is present as a command line tool ** -->
+	<target name="ensure-svn-present">
+		<exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code">
+			<env key="LANG" value="C" />
+			<arg value="--version" />
+		</exec>
+		<fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system.">
+			<!-- return code not set at all? Most likely svn isn't installed -->
+			<condition>
+				<not>
+					<isset property="svn.exit.code" />
+				</not>
+			</condition>
+		</fail>
+		<fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system.">
+			<!-- error code from SVN? Most likely svn is not what we are looking on this system -->
+			<condition>
+				<isfailure code="${svn.exit.code}" />
+			</condition>
+		</fail>
+	</target>
+
+	<target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist">
+	</target>
+	
+	<target name="unjar-test" >
         <!--unjar dest="C:/Workspace_2/geotoolstest/lib/unjartest">
             <fileset dir="lib"/>
         </unjar-->
-        <jar destfile="C:/Workspace_2/geotoolstest/lib/unjartest/${ant.project.name}.jar" basedir="C:/Workspace_2/geotoolstest/lib/unjartest">
-            <manifest>
+        
+        		<jar destfile="C:/Workspace_2/geotoolstest/lib/unjartest/${ant.project.name}.jar" basedir="C:/Workspace_2/geotoolstest/lib/unjartest">
+
+			<manifest>
                 <attribute name="Author" value="Christoph Beekmans, Fabian Kowitz, Anna Robaszkiewicz, Oliver Kuhn, Martin Ulitzny"/>
                 <attribute name="Plugin-Class" value="org.openstreetmap.josm.plugins.CoveragePlugin.CoveragePlugin"/>
@@ -267,7 +287,8 @@
                 <attribute name="Plugin-Mainversion" value=".."/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
-                <attribute name="Class-path" value=" . CoveragePlugin/lib/commons-beanutils-1.7.0.jar CoveragePlugin/lib/commons-pool-1.5.3.jar CoveragePlugin/lib/geoapi-2.3-M1.jar CoveragePlugin/lib/geoapi-pending-2.3-M1.jar CoveragePlugin/lib/geoapi.jar CoveragePlugin/lib/gt-api-2.6.0.jar CoveragePlugin/lib/gt-coverage-2.6.0.jar CoveragePlugin/lib/gt-epsg-extension-2.6.0.jar CoveragePlugin/lib/gt-epsg-hsql-2.6.0.jar CoveragePlugin/lib/gt-geotiff-2.6.0.jar CoveragePlugin/lib/gt-main-2.6.0.jar CoveragePlugin/lib/gt-metadata-2.6.0.jar CoveragePlugin/lib/gt-referencing-2.6.0.jar CoveragePlugin/lib/hsqldb-1.8.0.7.jar CoveragePlugin/lib/imageio-ext-tiff-1.0.4.jar CoveragePlugin/lib/imageio-ext-utilities-1.0.4.jar CoveragePlugin/lib/jai_codec-1.1.3.jar CoveragePlugin/lib/jai_core.jar CoveragePlugin/lib/jai_imageio-1.1.jar CoveragePlugin/lib/jdom-1.0.jar CoveragePlugin/lib/jsr-275-1.0-beta-2.jar CoveragePlugin/lib/jts-1.10.jar CoveragePlugin/lib/log4j-1.2.12.jar CoveragePlugin/lib/vecmath-1.3.2.jar"/>
-            </manifest>
-        </jar>
-    </target>
+                <attribute name="Class-path" value=" . CoveragePlugin/lib/commons-beanutils-1.7.0.jar CoveragePlugin/lib/commons-pool-1.5.3.jar CoveragePlugin/lib/geoapi-2.3-M1.jar CoveragePlugin/lib/geoapi-pending-2.3-M1.jar CoveragePlugin/lib/geoapi.jar CoveragePlugin/lib/gt-api-2.6.0.jar CoveragePlugin/lib/gt-coverage-2.6.0.jar CoveragePlugin/lib/gt-epsg-extension-2.6.0.jar CoveragePlugin/lib/gt-epsg-hsql-2.6.0.jar CoveragePlugin/lib/gt-geotiff-2.6.0.jar CoveragePlugin/lib/gt-main-2.6.0.jar CoveragePlugin/lib/gt-metadata-2.6.0.jar CoveragePlugin/lib/gt-referencing-2.6.0.jar CoveragePlugin/lib/hsqldb-1.8.0.7.jar CoveragePlugin/lib/imageio-ext-tiff-1.0.4.jar CoveragePlugin/lib/imageio-ext-utilities-1.0.4.jar CoveragePlugin/lib/jai_codec-1.1.3.jar CoveragePlugin/lib/jai_core.jar CoveragePlugin/lib/jai_imageio-1.1.jar CoveragePlugin/lib/jdom-1.0.jar CoveragePlugin/lib/jsr-275-1.0-beta-2.jar CoveragePlugin/lib/jts-1.10.jar CoveragePlugin/lib/log4j-1.2.12.jar CoveragePlugin/lib/vecmath-1.3.2.jar" />
+			</manifest>
+		</jar>
+	</target>
+	
 </project>
Index: applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImageLayer.java
===================================================================
--- applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImageLayer.java	(revision 26174)
+++ applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImageLayer.java	(revision 26413)
@@ -4,4 +4,5 @@
 
 import java.awt.Component;
+import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.Image;
@@ -68,6 +69,4 @@
     private CoordinateReferenceSystem sourceRefSys;
 
-
-
     /**
      * Constructor
@@ -82,5 +81,4 @@
         this.image = (BufferedImage) createImage();
         layericon = new ImageIcon(ImportImagePlugin.pluginClassLoader.getResource("images/layericon.png"));
-        
     }
 
@@ -97,5 +95,5 @@
         try {
             // create a grid coverage from the image
-            coverage = PluginOperations.createGridFromFile(imageFile, null);
+            coverage = PluginOperations.createGridFromFile(imageFile, null, true);
             this.sourceRefSys = coverage.getCoordinateReferenceSystem();
             
@@ -109,24 +107,19 @@
             if(e.getMessage().contains("No projection file found"))
             {
-                int useDefaultCRS = JOptionPane.showConfirmDialog(Main.parent, "<html>No projection file (.prj) found.<br>Use the default Coordinate Reference System instead?</html>", "Missing projection", JOptionPane.YES_NO_OPTION);
-                if (useDefaultCRS == 0)
-                {
+                int useUnprojected = JOptionPane.showConfirmDialog(Main.parent, "<html>No projection file (.prj) found.<br />Use the image unprojected?</html>", "Missing projection", JOptionPane.YES_NO_OPTION);
+                if (useUnprojected == 0) { // Yes
+                    logger.debug("Passing through image un-projected.");
                     try {
                         // create a grid coverage from the image
-                        coverage = PluginOperations.createGridFromFile(imageFile, PluginOperations.defaultSourceCRS);
+                        coverage = PluginOperations.createGridFromFile(imageFile, null, false);
                         this.sourceRefSys = coverage.getCoordinateReferenceSystem();
-                        
-                        // now reproject grid coverage
-                        coverage = PluginOperations.reprojectCoverage(coverage, CRS.decode(Main.proj.toCode()));
                     } catch (Exception e1) {
                         logger.error("Error while creating GridCoverage:",e1);
                         throw new IOException(e1);
                     }
-                }
-                else{
-                    logger.debug("Layer creation cancled by user due to missing projection information.");
+                } else { // No
+                    logger.debug("No projection and user declined un-projected use");
                     throw new LayerCreationCancledException();
                 }
-
             }
             else
@@ -140,7 +133,6 @@
 
         // TODO
-        upperLeft = new EastNorth(coverage.getEnvelope2D().y, coverage
-                .getEnvelope2D().x
-                + coverage.getEnvelope2D().width);
+        upperLeft = new EastNorth(coverage.getEnvelope2D().x,
+                coverage.getEnvelope2D().y + coverage.getEnvelope2D().height);
         angle = 0;
         bbox = coverage.getEnvelope2D();
@@ -163,12 +155,12 @@
             EastNorth center = Main.map.mapView.getCenter();
             EastNorth leftop = Main.map.mapView.getEastNorth(0, 0);
-            double pixel_per_lon_degree = (Main.map.mapView.getWidth() / 2.0)
+            double pixel_per_east_unit = (Main.map.mapView.getWidth() / 2.0)
                     / (center.east() - leftop.east());
-            double pixel_per_lat_degree = (Main.map.mapView.getHeight() / 2.0)
+            double pixel_per_north_unit = (Main.map.mapView.getHeight() / 2.0)
                     / (leftop.north() - center.north());
 
             // This is now the offset in screen pixels
-            double pic_offset_x = ((upperLeft.east() - leftop.east()) * pixel_per_lon_degree);
-            double pic_offset_y = ((leftop.north() - upperLeft.north()) * pixel_per_lat_degree);
+            double pic_offset_x = ((upperLeft.east() - leftop.east()) * pixel_per_east_unit);
+            double pic_offset_y = ((leftop.north() - upperLeft.north()) * pixel_per_north_unit);
 
             Graphics2D g = (Graphics2D) g2.create();
@@ -187,7 +179,7 @@
             double height = projbounds.maxNorth - projbounds.minNorth;
 
-            double ratio_x = (this.bbox.getMaxY() - this.bbox.getMinY())
+            double ratio_x = (this.bbox.getMaxX() - this.bbox.getMinX())
                     / width;
-            double ratio_y = (this.bbox.getMaxX() - this.bbox.getMinX())
+            double ratio_y = (this.bbox.getMaxY() - this.bbox.getMinY())
                     / height;
 
@@ -199,4 +191,8 @@
             double scaley = pixels4bbox_height / image.getHeight();
 
+            if ((scalex > 10) || (scaley > 10)) {
+                logger.warn("Not drawing image - scale too big");
+                return;
+            }
             g.scale(scalex, scaley);
 
@@ -282,6 +278,6 @@
     void resample(CoordinateReferenceSystem refSys) throws IOException, NoSuchAuthorityCodeException, FactoryException
     {
-        
-        GridCoverage2D coverage =  PluginOperations.createGridFromFile(this.imageFile, refSys);
+        logger.debug("resample");
+        GridCoverage2D coverage =  PluginOperations.createGridFromFile(this.imageFile, refSys, true);
         coverage = PluginOperations.reprojectCoverage(coverage, CRS.decode(Main.proj.toCode()));
         this.bbox = coverage.getEnvelope2D();
@@ -333,6 +329,4 @@
     }
     
-    
-    
     public CoordinateReferenceSystem getSourceRefSys() {
         return sourceRefSys;
Index: applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LoadImageAction.java
===================================================================
--- applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LoadImageAction.java	(revision 26174)
+++ applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LoadImageAction.java	(revision 26413)
@@ -14,5 +14,5 @@
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.plugins.ImportImagePlugin.ImageLayer.LayerCreationCancledException;
@@ -45,5 +45,5 @@
         ImageLayer layer = null;
         if (result == JFileChooser.APPROVE_OPTION) {
-            logger.info("File choosed:" + fc.getSelectedFile());
+            logger.info("File choosen:" + fc.getSelectedFile());
             try {
                 layer = new ImageLayer(fc.getSelectedFile());
@@ -51,5 +51,5 @@
                 // if user decides that layer should not be created just return.
                 return;
-            }catch (Exception e) {
+            } catch (Exception e) {
                 logger.error("Error while creating image layer: \n" + e.getMessage());
                 JOptionPane.showMessageDialog(null, marktr("Error while creating image layer: " + e.getCause()));
@@ -60,10 +60,10 @@
             // Add layer:
             Main.main.addLayer(layer);
-            LatLon min = new LatLon(layer.getBbox().getMinX(), layer.getBbox().getMinY());
-            LatLon max = new LatLon(layer.getBbox().getMaxX(), layer.getBbox().getMaxY());
+            EastNorth min = new EastNorth(layer.getBbox().getMinX(), layer.getBbox().getMinY());
+            EastNorth max = new EastNorth(layer.getBbox().getMaxX(), layer.getBbox().getMaxY());
             BoundingXYVisitor boundingXYVisitor = new BoundingXYVisitor();
-            boundingXYVisitor.visit(new Bounds(min, max));
+            boundingXYVisitor.visit(min);
+            boundingXYVisitor.visit(max);
             Main.map.mapView.recalculateCenterScale(boundingXYVisitor);
-            Main.map.mapView.zoomTo(new Bounds(min, max));
         }
     }
Index: applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/PluginOperations.java
===================================================================
--- applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/PluginOperations.java	(revision 26174)
+++ applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/PluginOperations.java	(revision 26413)
@@ -107,5 +107,5 @@
      * @throws Exception
      */
-    public static GridCoverage2D createGridFromFile(File file, CoordinateReferenceSystem refSys) throws IOException{
+    public static GridCoverage2D createGridFromFile(File file, CoordinateReferenceSystem refSys, boolean failIfNoPrjFile) throws IOException {
 
         GridCoverage2D coverage = null;
@@ -125,9 +125,9 @@
             
             // try to read GeoTIFF:
-            try{
+            try {
                 coverage = readGeoTiff(file, refSys);
                 return coverage;
-            }catch (DataSourceException dse) {
-                if(!dse.getMessage().contains("Coordinate Reference System is not available")){
+            } catch (DataSourceException dse) {
+                if (!dse.getMessage().contains("Coordinate Reference System is not available")){
                     dse.printStackTrace();
                 }
@@ -143,16 +143,20 @@
             for (int i = 0; i < postfixes.length; i++) {
                 File prjFile = new File(fileNameWithoutExt + "." + postfixes[i]);
-                if(prjFile.exists()){
+                if (prjFile.exists()){
                     tfwReader = new WorldFileReader(prjFile);
                 }
             }
-            if(tfwReader == null){
+
+            if (tfwReader == null) {
                 throw new IOException("No Worldfile found.");
             }
             
-            if(refSys == null){
+            if (refSys == null) {
                 // if no crs is delivered try to read projection file:
                 refSys = readPrjFile(file);
-                if(refSys == null) throw new IOException("No projection file found.");
+                if (refSys == null) {
+                    if (failIfNoPrjFile) throw new IOException("No projection file found.");
+                    logger.debug("no projection given, no projection file found; using unprojected file.");
+                }
             }
             
@@ -178,14 +182,17 @@
             for (int i = 0; i < postfixes.length; i++) {
                 File prjFile = new File(fileNameWithoutExt + "." + postfixes[i]);
-                if(prjFile.exists()){
+                if (prjFile.exists()){
                     tfwReader = new WorldFileReader(prjFile);
                 }
             }
-            if(tfwReader == null) throw new IOException("No Worldfile found.");
-            
-            if(refSys == null){
+            if (tfwReader == null) throw new IOException("No Worldfile found.");
+            
+            if (refSys == null) {
                 // if no crs is delivered try to read projection file:
                 refSys = readPrjFile(file);
-                if(refSys == null) throw new IOException("No projection file found.");
+                if (refSys == null) {
+                    if (failIfNoPrjFile) throw new IOException("No projection file found.");
+                    logger.debug("no projection given, no projection file found; using unprojected file.");
+                }
             }
             
@@ -209,14 +216,17 @@
             for (int i = 0; i < postfixes.length; i++) {
                 File prjFile = new File(fileNameWithoutExt + "." + postfixes[i]);
-                if(prjFile.exists()){
+                if (prjFile.exists()){
                     tfwReader = new WorldFileReader(prjFile);
                 }
             }
-            if(tfwReader == null) throw new IOException("No Worldfile found.");
-
-            if(refSys == null){
+            if (tfwReader == null) throw new IOException("No Worldfile found.");
+
+            if (refSys == null) {
                 // if no crs is delivered try to read projection file:
                 refSys = readPrjFile(file);
-                if(refSys == null) throw new IOException("No projection file found.");
+                if (refSys == null) {
+                    if (failIfNoPrjFile) throw new IOException("No projection file found.");
+                    logger.debug("no projection given, no projection file found; using unprojected file.");
+                }
             }
             
@@ -240,5 +250,5 @@
             for (int i = 0; i < postfixes.length; i++) {
                 File prjFile = new File(fileNameWithoutExt + "." + postfixes[i]);
-                if(prjFile.exists()){
+                if (prjFile.exists()){
                     tfwReader = new WorldFileReader(prjFile);
                 }
@@ -246,8 +256,11 @@
             if(tfwReader == null) throw new IOException("No Worldfile found.");
             
-            if(refSys == null){
+            if (refSys == null) {
                 // if no crs is delivered try to read projection file:
                 refSys = readPrjFile(file);
-                if(refSys == null) throw new IOException("No projection file found.");
+                if (refSys == null) {
+                    if (failIfNoPrjFile) throw new IOException("No projection file found.");
+                    logger.debug("no projection given, no projection file found; using unprojected file.");
+                }
             }
             
@@ -290,5 +303,5 @@
         
         File prjFile = new File(prjFilename);
-        if(!prjFile.exists()) throw new IOException("No projection file found (.prj) for image '" + file.getName() + "'");
+        if (!prjFile.exists()) return null;
         logger.debug("Loading .prj file: " + prjFile.getAbsolutePath());
         
