Index: src/org/openstreetmap/josm/data/ImageData.java
===================================================================
--- src/org/openstreetmap/josm/data/ImageData.java	(revision 15350)
+++ src/org/openstreetmap/josm/data/ImageData.java	(working copy)
@@ -246,19 +246,11 @@
      * Remove the current selected image from the list
      */
     public void removeSelectedImage() {
-        List<ImageEntry> selected = getSelectedImages();
-        if (selected.size() > 1) {
+        List<ImageEntry> selectedImages = getSelectedImages();
+        if (selectedImages.size() > 1) {
             throw new IllegalStateException(tr("Multiple images have been selected"));
         }
-        if (selected.isEmpty()) {
-            return;
-        }
-        data.remove(getSelectedImages().get(0));
-        if (selectedImagesIndex.get(0) == data.size()) {
-            setSelectedImageIndex(data.size() - 1);
-        } else {
-            setSelectedImageIndex(selectedImagesIndex.get(0), true);
-        }
+        removeImages(selectedImages);
     }
 
     /**
@@ -266,14 +258,22 @@
      * @since 15348
      */
     public void removeSelectedImages() {
-        List<ImageEntry> selected = getSelectedImages();
-        if (selected.isEmpty()) {
+        List<ImageEntry> selectedImages = getSelectedImages();
+        removeImages(selectedImages);
+    }
+
+    private void removeImages(List<ImageEntry> selectedImages) {
+        if (selectedImages.isEmpty()) {
             return;
         }
         for (ImageEntry img: getSelectedImages()) {
             data.remove(img);
         }
-        setSelectedImageIndex(-1, true);
+        if (selectedImagesIndex.get(0) == data.size()) {
+            setSelectedImageIndex(data.size() - 1);
+        } else {
+            setSelectedImageIndex(selectedImagesIndex.get(0), true);
+        }
     }
 
     /**
Index: test/unit/org/openstreetmap/josm/data/ImageDataTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(revision 15350)
+++ test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(working copy)
@@ -195,6 +195,32 @@
     }
 
     @Test
+    public void testSelectImageAfterRemove() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectFirstImage();
+        data.removeSelectedImages();
+        assertEquals(1, data.getImages().size());
+        assertEquals(1, data.getSelectedImages().size());
+        assertEquals(list.get(0), data.getSelectedImages().get(0));
+    }
+
+    @Test
+    public void testSelectImageAfterRemoveWhenTheLastIsSelected() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectLastImage();
+        data.removeSelectedImages();
+        assertEquals(1, data.getImages().size());
+        assertEquals(1, data.getSelectedImages().size());
+        assertEquals(list.get(0), data.getSelectedImages().get(0));
+    }
+
+    @Test
     public void testRemoveSelectedImageTriggerListener() {
         List<ImageEntry> list = getOneImage();
         list.add(new ImageEntry());
