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 34218)
+++ /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImageLayer.java	(revision 34219)
@@ -6,7 +6,7 @@
 import java.awt.Graphics2D;
 import java.awt.GraphicsEnvironment;
-import java.awt.Image;
 import java.awt.event.ActionEvent;
 import java.awt.image.BufferedImage;
+import java.awt.image.RenderedImage;
 import java.io.File;
 import java.io.IOException;
@@ -39,4 +39,5 @@
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -75,6 +76,6 @@
 
         this.imageFile = file;
-        this.image = (BufferedImage) createImage();
-        URL iconURL = ImportImagePlugin.pluginClassLoader.getResource("images/layericon.png");
+        this.image = createImage();
+        URL iconURL = getClass().getResource("images/layericon.png");
         if (iconURL != null) {
             layericon = new ImageIcon(iconURL);
@@ -85,5 +86,5 @@
      * create spatial referenced image.
      */
-    private Image createImage() throws IOException {
+    private BufferedImage createImage() throws IOException {
 
         // geotools type for images and value coverages
@@ -144,5 +145,4 @@
         logger.debug("Coverage created: " + coverage);
 
-        // TODO
         upperLeft = new EastNorth(coverage.getEnvelope2D().x,
                 coverage.getEnvelope2D().y + coverage.getEnvelope2D().height);
@@ -150,11 +150,21 @@
         bbox = coverage.getEnvelope2D();
 
-        // Refresh
-        // Main.map.mapView.repaint();
-//      PlanarImage image = (PlanarImage) coverage.getRenderedImage();
-//      logger.info("Color Model: " + coverage.getRenderedImage().getColorModel());
-        ImageWorker worker = new ImageWorker(coverage.getRenderedImage());
-
-        return worker.getBufferedImage();
+        RenderedImage img = coverage.getRenderedImage();
+        try {
+            BufferedImage bi = new ImageWorker(img).getBufferedImage();
+            BufferedImage dst = new BufferedImage(bi.getWidth(), bi.getHeight(), BufferedImage.TYPE_INT_ARGB);
+            Graphics2D g2d = dst.createGraphics();
+            try {
+                // Check image can be drawn correctly
+                g2d.drawImage(bi, 0, 0, null);
+            } finally {
+                g2d.dispose();
+            }
+            return bi;
+        } catch (ArrayIndexOutOfBoundsException e) {
+            Logging.debug(e);
+            // See #12108 - rescale to bytes in case of ComponentColorModel index error
+            return new ImageWorker(img).rescaleToBytes().getBufferedImage();
+        }
     }
 
Index: /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImageFileImporter.java
===================================================================
--- /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImageFileImporter.java	(revision 34218)
+++ /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImageFileImporter.java	(revision 34219)
@@ -7,14 +7,17 @@
 import java.io.IOException;
 import java.util.List;
+
 import javax.swing.JOptionPane;
+
 import org.apache.log4j.Logger;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExtensionFileFilter;
-import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.io.importexport.FileImporter;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.plugins.ImportImagePlugin.ImageLayer.LayerCreationCanceledException;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -42,5 +45,5 @@
     @Override
     public void importData(List<File> files, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
-        if (null == files || files.isEmpty()) return;
+        if (null == files) return;
 
         for (File file: files) {
@@ -54,14 +57,12 @@
                 continue;
             } catch (Exception e) {
-               logger.error("Error while creating image layer: \n" + e.getMessage());
-                JOptionPane.showMessageDialog(null, tr("Error while creating image layer: {0}", e.getCause()));
+                Logging.error(e);
+                logger.error("Error while creating image layer: \n" + e.getMessage());
+                GuiHelper.runInEDT(() ->
+                    JOptionPane.showMessageDialog(Main.parent, tr("Error while creating image layer: {0}", e.getCause())));
                 continue;
             }
 
-            // Add layer:
             MainApplication.getLayerManager().addLayer(layer);
-            BoundingXYVisitor boundingXYVisitor = new BoundingXYVisitor();
-            layer.visitBoundingBox(boundingXYVisitor);
-            MainApplication.getMap().mapView.zoomTo(boundingXYVisitor);
         }
     }
Index: /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImagePlugin.java
===================================================================
--- /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImagePlugin.java	(revision 34218)
+++ /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/ImportImagePlugin.java	(revision 34219)
@@ -5,7 +5,5 @@
 import java.io.FileWriter;
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.Properties;
 
@@ -21,5 +19,4 @@
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.plugins.PluginInformation;
-import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -39,8 +36,5 @@
     JosmAction loadFileAction = null;
 
-    // custom Classloader to load resources from the main JAR
-    static ClassLoader pluginClassLoader = createPluginClassLoader();
-
-    // plugin proerties
+    // plugin properties
     static Properties pluginProps;
 
@@ -66,5 +60,5 @@
         try {
             // Initialize logger
-            initializeLogger(pluginClassLoader);
+            initializeLogger();
 
             // Check whether plugin has already been installed. Otherwise install
@@ -94,6 +88,4 @@
             throw e;
         }
-
-        logger.info("Plugin successfully loaded.");
     }
 
@@ -131,5 +123,5 @@
             if (pluginProps == null || pluginProps.isEmpty()) {
                 try (FileWriter fw = new FileWriter(new File(PLUGINPROPERTIES_PATH))) {
-                    URL propertiesURL = pluginClassLoader.getResource("resources/" + PLUGINPROPERTIES_FILENAME);
+                    URL propertiesURL = getClass().getResource("resources/" + PLUGINPROPERTIES_FILENAME);
                     pluginProps = new Properties();
                     pluginProps.load(propertiesURL.openStream());
@@ -141,5 +133,5 @@
             if (!new File(LOGGING_PROPERTIES_FILEPATH).exists()) {
                 try (FileWriter fw = new FileWriter(new File(LOGGING_PROPERTIES_FILEPATH))) {
-                    URL propertiesURL = pluginClassLoader.getResource("resources/log4j.properties");
+                    URL propertiesURL = getClass().getResource("resources/log4j.properties");
                     Properties loggingProps = new Properties();
                     loggingProps.load(propertiesURL.openStream());
@@ -154,7 +146,7 @@
 
     /**
-     * Initialize logger using plugin classloader.
+     * Initialize logger.
      */
-    private void initializeLogger(ClassLoader cl) {
+    private void initializeLogger() {
 
         Properties props = new Properties();
@@ -194,20 +186,4 @@
         PropertyConfigurator.configure(props);
         logger = Logger.getLogger(ImportImagePlugin.class);
-        logger.info("Logger successfully initialized with standard settings.");
-
-    }
-
-    /**
-     * get a plugin-specific classloader.
-     */
-    private static ClassLoader createPluginClassLoader() {
-        try {
-            return URLClassLoader.newInstance(
-                    new URL[] {new File(Main.pref.getPluginsDirectory().getAbsolutePath() + "/ImportImagePlugin.jar").toURI().toURL()},
-                    ImportImagePlugin.class.getClassLoader()
-                    );
-        } catch (MalformedURLException e) {
-            throw new JosmRuntimeException(e);
-        }
     }
 }
Index: /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LayerPropertiesDialog.java
===================================================================
--- /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LayerPropertiesDialog.java	(revision 34218)
+++ /applications/editors/josm/plugins/ImportImagePlugin/src/org/openstreetmap/josm/plugins/ImportImagePlugin/LayerPropertiesDialog.java	(revision 34219)
@@ -33,5 +33,4 @@
 import org.opengis.referencing.NoSuchAuthorityCodeException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.Logging;
 
