Index: trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 18775)
+++ trunk/src/org/openstreetmap/josm/actions/upload/ValidateUploadHook.java	(revision 18776)
@@ -15,7 +15,5 @@
 import org.openstreetmap.josm.data.APIDataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.OsmValidator;
-import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.TestError;
 import org.openstreetmap.josm.data.validation.ValidationTask;
@@ -53,8 +51,4 @@
         OsmValidator.initializeTests();
         new ValidationTask(errors -> {
-            if (!Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER_UPLOAD.get())) {
-                // Use >= just in case we add additional levels.
-                errors.removeIf(error -> error.getSeverity().getLevel() >= Severity.OTHER.getLevel());
-            }
             if (errors.stream().allMatch(TestError::isIgnored)) {
                 returnCode.set(true);
Index: trunk/src/org/openstreetmap/josm/data/validation/ValidationTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/ValidationTask.java	(revision 18775)
+++ trunk/src/org/openstreetmap/josm/data/validation/ValidationTask.java	(revision 18776)
@@ -108,4 +108,10 @@
         }
         if (this.onFinish != null) {
+            // Remove any low severity issues if they are not desired.
+            if (!(Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER.get()) &&
+                    (!this.beforeUpload || Boolean.TRUE.equals(ValidatorPrefHelper.PREF_OTHER_UPLOAD.get())))) {
+                // Use >= just in case we add additional levels.
+                this.errors.removeIf(error -> error.getSeverity().getLevel() >= Severity.OTHER.getLevel());
+            }
             this.onFinish.accept(this.errors);
         }
@@ -125,5 +131,6 @@
             getProgressMonitor().setCustomText(tr("Test {0}/{1}: Starting {2}", testCounter, tests.size(), test.getName()));
             test.setBeforeUpload(this.beforeUpload);
-            test.setPartialSelection(formerValidatedPrimitives != null);
+            // Pre-upload checks only run on a partial selection.
+            test.setPartialSelection(this.beforeUpload || formerValidatedPrimitives != null);
             test.startTest(getProgressMonitor().createSubTaskMonitor(validatedPrimitives.size(), false));
             test.visit(validatedPrimitives);
