Index: src/org/openstreetmap/josm/data/ImageData.java
===================================================================
--- src/org/openstreetmap/josm/data/ImageData.java	(revision 17063)
+++ src/org/openstreetmap/josm/data/ImageData.java	(working copy)
@@ -266,7 +266,7 @@
         for (ImageEntry img: getSelectedImages()) {
             data.remove(img);
         }
-        if (selectedImagesIndex.get(0) == data.size()) {
+        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 17063)
+++ test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(working copy)
@@ -195,6 +195,20 @@
     }
 
     @Test
+    public void testRemoveSelectedImagesWithRemainingImages() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectLastImage();
+        data.addImageToSelection(list.get(1));
+        data.removeSelectedImages();
+        assertEquals(1, data.getImages().size());
+        assertEquals(1, data.getSelectedImages().size());
+    }
+
+    @Test
     public void testSelectImageAfterRemove() {
         List<ImageEntry> list = getOneImage();
         list.add(new ImageEntry());
@@ -346,7 +360,6 @@
         assertEquals(0, data.getSelectedImages().size());
         data.selectFirstImage();
         assertEquals(1, data.getSelectedImages().size());
-
     }
 
     @Test
