diff --git a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
index 3a7ccb67a2..44f503ed0d 100644
--- a/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
+++ b/src/org/openstreetmap/josm/gui/autofilter/AutoFilterManager.java
@@ -63,10 +63,17 @@ public final class AutoFilterManager
 implements ZoomChangeListener, MapModeChangeListener, DataSetListener, PreferenceChangedListener, LayerChangeListener {
 
     /**
-     * Property to determines if the auto filter feature is enabled.
+     * Property to determine if the auto filter feature is enabled.
      */
     public static final BooleanProperty PROP_AUTO_FILTER_ENABLED = new BooleanProperty("auto.filter.enabled", true);
 
+    /**
+     * Property to determine if the auto filter feature completely hides elements instead of just disabling them.
+     * Equivalent to {@link Filter#hiding}
+     */
+    public static final BooleanProperty PROP_AUTO_FILTER_HIDING = new BooleanProperty("auto.filter.hiding", false);
+
+
     /**
      * Property to determine the current auto filter rule.
      */
@@ -148,9 +155,10 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
         final AutoFilterRule rule;
         final int value;
 
-        CompiledFilter(AutoFilterRule rule, int value) {
+        CompiledFilter(AutoFilterRule rule, int value, boolean hiding) {
             this.rule = rule;
             this.value = value;
+            this.hiding = hiding;
             this.enable = true;
             this.inverted = true;
             this.text = rule.getKey() + "=" + rule.formatValue(value);
@@ -215,7 +223,7 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
         final AutoFilterButton keyButton = AutoFilterButton.forOsmKey(enabledRule.getKey());
         addButton(keyButton, Integer.MIN_VALUE, i++);
         for (final Integer value : values.descendingSet()) {
-            CompiledFilter filter = new CompiledFilter(enabledRule, value);
+            CompiledFilter filter = new CompiledFilter(enabledRule, value, PROP_AUTO_FILTER_HIDING.get());
             String label = enabledRule.formatValue(value);
             AutoFilter autoFilter = new AutoFilter(label, filter.text, filter);
             AutoFilterButton button = new AutoFilterButton(autoFilter);
@@ -437,7 +445,8 @@ implements ZoomChangeListener, MapModeChangeListener, DataSetListener, Preferenc
                 enableAutoFilterRule((AutoFilterRule) null);
                 resetCurrentAutoFilter();
             }
-        } else if (e.getKey().equals(PROP_AUTO_FILTER_RULE.getKey())) {
+        } else if (e.getKey().equals(PROP_AUTO_FILTER_RULE.getKey())
+                || e.getKey().equals(PROP_AUTO_FILTER_HIDING.getKey())) {
             enableAutoFilterRule(PROP_AUTO_FILTER_RULE.get());
             resetCurrentAutoFilter();
             updateButtons();
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
index c75c5fcfe9..f9dd0bf99d 100644
--- a/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
+++ b/src/org/openstreetmap/josm/gui/preferences/display/DrawingPreference.java
@@ -56,6 +56,8 @@ public class DrawingPreference extends DefaultTabPreferenceSetting {
     private final JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color"));
     private final JCheckBox discardableKeys = new JCheckBox(tr("Display discardable keys"));
     private final JCheckBox autoFilters = new JCheckBox(tr("Use auto filters"));
+    private final JCheckBox autoFiltersHiding = new JCheckBox(tr("Hide auto-filtered elements"));
+
     private final JLabel lblRule = new JLabel(tr("Rule"));
     private final JosmComboBox<AutoFilterRule> autoFilterRules = new JosmComboBox<>(
             AutoFilterManager.getInstance().getAutoFilterRules().toArray(new AutoFilterRule[] {}));
@@ -149,9 +151,12 @@ public class DrawingPreference extends DefaultTabPreferenceSetting {
         autoFilters.addActionListener(e -> {
             lblRule.setEnabled(autoFilters.isSelected());
             autoFilterRules.setEnabled(autoFilters.isSelected());
+            autoFiltersHiding.setEnabled(autoFilters.isSelected());
         });
         autoFilterRules.setToolTipText("Rule defining which tag will provide automatic filters, below a certain zoom level");
         autoFilterRules.setSelectedItem(AutoFilterManager.getInstance().getAutoFilterRule(AutoFilterManager.PROP_AUTO_FILTER_RULE.get()));
+        autoFiltersHiding.setToolTipText(tr("Completely hide elements which do not match the automatic filter instead of merely disabling them"));
+        autoFiltersHiding.setSelected(AutoFilterManager.PROP_AUTO_FILTER_HIDING.get());
 
         JLabel performanceLabel = new JLabel(tr("Options that affect drawing performance"));
 
@@ -183,6 +188,7 @@ public class DrawingPreference extends DefaultTabPreferenceSetting {
         panel.add(autoFilters, GBC.eop().insets(20, 0, 0, 0));
         panel.add(lblRule, GBC.std().insets(40, 0, 0, 0));
         panel.add(autoFilterRules, GBC.eop().fill(GBC.HORIZONTAL).insets(5, 0, 0, 0));
+        panel.add(autoFiltersHiding, GBC.eop().insets(40, 0, 0, 0));
 
         ExpertToggleAction.addVisibilitySwitcher(performanceLabel);
         ExpertToggleAction.addVisibilitySwitcher(useAntialiasing);
@@ -213,6 +219,7 @@ public class DrawingPreference extends DefaultTabPreferenceSetting {
         Config.getPref().putBoolean("draw.helper-line", drawHelperLine.isSelected());
         Config.getPref().putBoolean("display.discardable-keys", discardableKeys.isSelected());
         AutoFilterManager.PROP_AUTO_FILTER_ENABLED.put(autoFilters.isSelected());
+        AutoFilterManager.PROP_AUTO_FILTER_HIDING.put(autoFiltersHiding.isSelected());
         AutoFilterManager.PROP_AUTO_FILTER_RULE.put(((AutoFilterRule) autoFilterRules.getSelectedItem()).getKey());
         int vn = Config.getPref().getInt("mappaint.node.virtual-size", 8);
         if (virtualNodes.isSelected()) {
