Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18684)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18685)
@@ -573,4 +573,28 @@
                     imageEntry.remove();
                 }
+                selectNextImageAfterDeletion(imageEntry);
+            }
+        }
+
+        /**
+         * Select the logical next entry after deleting the currently viewed image
+         * @param oldEntry The image entry that was just deleted
+         */
+        private void selectNextImageAfterDeletion(IImageEntry<?> oldEntry) {
+            final IImageEntry<?> currentImageEntry = ImageViewerDialog.this.currentEntry;
+            // This is mostly just in case something changes the displayed entry (aka avoid race condition) or an image provider
+            // sets the next image itself.
+            if (Objects.equals(currentImageEntry, oldEntry)) {
+                final IImageEntry<?> nextImage;
+                if (oldEntry instanceof ImageEntry) {
+                    nextImage = ((ImageEntry) oldEntry).getDataSet().getSelectedImage();
+                } else if (oldEntry.getNextImage() != null) {
+                    nextImage = oldEntry.getNextImage();
+                } else if (oldEntry.getPreviousImage() != null) {
+                    nextImage = oldEntry.getPreviousImage();
+                } else {
+                    nextImage = null;
+                }
+                ImageViewerDialog.getInstance().displayImages(nextImage == null ? null : Collections.singletonList(nextImage));
             }
         }
@@ -588,7 +612,8 @@
         public void actionPerformed(ActionEvent e) {
             if (currentEntry != null) {
-                List<IImageEntry<?>> toDelete = currentEntry instanceof ImageEntry ?
-                        new ArrayList<>(((ImageEntry) currentEntry).getDataSet().getSelectedImages())
-                        : Collections.singletonList(currentEntry);
+                IImageEntry<?> oldEntry = ImageViewerDialog.this.currentEntry;
+                List<IImageEntry<?>> toDelete = oldEntry instanceof ImageEntry ?
+                        new ArrayList<>(((ImageEntry) oldEntry).getDataSet().getSelectedImages())
+                        : Collections.singletonList(oldEntry);
                 int size = toDelete.size();
 
@@ -631,4 +656,5 @@
                         data.updateSelectedImage();
                     });
+                    ImageViewerDialog.this.imageRemoveAction.selectNextImageAfterDeletion(oldEntry);
                 }
             }
