diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
index 67c00a8735..d6c9b0b07b 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
@@ -551,9 +551,9 @@ public class CorrelateGpxWithImages extends AbstractAction implements ExpertMode
 
         JLabel labelPosition = new JLabel(tr("Override position for: "));
 
-        int numAll = yLayer.getSortedImgList(true, true).size();
-        int numExif = numAll - yLayer.getSortedImgList(false, true).size();
-        int numTagged = numAll - yLayer.getSortedImgList(true, false).size();
+        int numAll = yLayer.getSortedImgList(true, true, imgTimeSource).size();
+        int numExif = numAll - yLayer.getSortedImgList(false, true, imgTimeSource).size();
+        int numTagged = numAll - yLayer.getSortedImgList(true, false, imgTimeSource).size();
 
         cbExifImg = new JCheckBox(tr("Images with geo location in exif data ({0}/{1})", numExif, numAll));
         cbExifImg.setEnabled(numExif != 0);
@@ -828,6 +828,9 @@ public class CorrelateGpxWithImages extends AbstractAction implements ExpertMode
             // So reset all images.
             yLayer.discardTmp();
 
+            //Get how many images are present in the layer
+            int totalImg = yLayer.getImages().size();
+            
             // Construct a list of images that have a date, and sort them on the date.
             List<ImageEntry> dateImgLst = getSortedImgList();
             // Create a temporary copy for each image
@@ -846,7 +849,7 @@ public class CorrelateGpxWithImages extends AbstractAction implements ExpertMode
 
             return trn("<html>Matched <b>{0}</b> of <b>{1}</b> photo to GPX track.</html>",
                     "<html>Matched <b>{0}</b> of <b>{1}</b> photos to GPX track.</html>",
-                    dateImgLst.size(), lastNumMatched, dateImgLst.size());
+                    totalImg, lastNumMatched, totalImg);
         }
     }
 
@@ -1003,7 +1006,7 @@ public class CorrelateGpxWithImages extends AbstractAction implements ExpertMode
     }
 
     private List<ImageEntry> getSortedImgList() {
-        return yLayer.getSortedImgList(cbExifImg.isSelected(), cbTaggedImg.isSelected());
+        return yLayer.getSortedImgList(cbExifImg.isSelected(), cbTaggedImg.isSelected(), imgTimeSource);
     }
 
     private static GpxDataWrapper selectedGPX(boolean complain) {
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/EditImagesSequenceAction.java b/src/org/openstreetmap/josm/gui/layer/geoimage/EditImagesSequenceAction.java
index 6d84ef2310..7f4dfa593b 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/EditImagesSequenceAction.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/EditImagesSequenceAction.java
@@ -79,7 +79,7 @@ public class EditImagesSequenceAction extends JosmAction {
             // So reset all images.
             yLayer.discardTmp();
             // Construct a list of images that have a date, and sort them on the date.
-            List<ImageEntry> dateImgLst = yLayer.getSortedImgList(true, true);
+            List<ImageEntry> dateImgLst = yLayer.getSortedImgList(true, true, TimeSource.EXIFCAMTIME);
             // Create a temporary copy for each image
             dateImgLst.forEach(ie -> ie.createTmp().unflagNewGpsData());
             GpxImageCorrelation.matchGpxTrack(dateImgLst, yLayer.getFauxGpxData(),
diff --git a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
index da00f78db7..ce29dd6444 100644
--- a/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
@@ -47,6 +47,7 @@ import org.openstreetmap.josm.data.ImageData.ImageDataUpdateListener;
 import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.GpxImageEntry;
 import org.openstreetmap.josm.data.gpx.GpxTrack;
+import org.openstreetmap.josm.data.gpx.TimeSource;
 import org.openstreetmap.josm.data.imagery.street_level.IImageEntry;
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
@@ -977,14 +978,18 @@ public class GeoImageLayer extends AbstractModifiableLayer implements
      * Default setting is to return untagged images, but may be overwritten.
      * @param exif also returns images with exif-gps info
      * @param tagged also returns tagged images
+     * @param gpsTime use GPS Time if true, instead of Camera RTC Time
      * @return matching images
+     * @since xxx gpsTime was added
      */
-    List<ImageEntry> getSortedImgList(boolean exif, boolean tagged) {
+    List<ImageEntry> getSortedImgList(boolean exif, boolean tagged, TimeSource timeSource) {
         return data.getImages().stream()
-                .filter(GpxImageEntry::hasExifTime)
+                .filter(timeSource == TimeSource.EXIFGPSTIME ? GpxImageEntry::hasExifGpsTime : GpxImageEntry::hasExifTime)
                 .filter(e -> e.getExifCoor() == null || exif)
                 .filter(e -> tagged || !e.isTagged() || e.getExifCoor() != null)
-                .sorted(Comparator.comparing(ImageEntry::getExifInstant))
+                .sorted(timeSource == TimeSource.EXIFGPSTIME
+                    ? Comparator.comparing(ImageEntry::getExifGpsInstant)
+                    : Comparator.comparing(ImageEntry::getExifInstant))
                 .collect(toList());
     }
 }
diff --git a/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java b/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
index 549de9c44b..454fbf46a4 100644
--- a/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayerTest.java
@@ -2,16 +2,20 @@
 package org.openstreetmap.josm.gui.layer.geoimage;
 
 import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import java.util.Arrays;
 import java.util.Collections;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
+import org.openstreetmap.josm.data.gpx.TimeSource;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.testutils.annotations.BasicPreferences;
 import org.openstreetmap.josm.testutils.annotations.Main;
 import org.openstreetmap.josm.testutils.annotations.ThreadSync;
+import org.openstreetmap.josm.tools.date.DateUtils;
 
 /**
  * Unit tests of {@link GeoImageLayer} class.
@@ -41,4 +45,20 @@ class GeoImageLayerTest {
         OsmDataLayer osmDataLayer = new OsmDataLayer(new DataSet(), "", null);
         assertThrows(IllegalArgumentException.class, () -> geoImageLayer.mergeFrom(osmDataLayer));
     }
+
+    /**
+     * Test that {@link GeoImageLayer#getSortedImgList} filters images without ExifGpsTime
+     */
+    @Test
+    void testMissingGPSTimeStamp() {
+        ImageEntry i1, i2;
+        i1 = new ImageEntry();
+        i1.setExifGpsTime(DateUtils.parseInstant("2016:01:03 12:00:00"));
+        i2 = new ImageEntry();
+        i2.setExifTime(DateUtils.parseInstant("2016:01:03 12:00:01"));
+
+        GeoImageLayer geoGpsImageLayer = new GeoImageLayer(Arrays.asList(i1, i2), null);
+        assertEquals(1, geoGpsImageLayer.getSortedImgList(false, false, TimeSource.EXIFGPSTIME).size());
+    }
+
 }
