Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17076)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Combo.java	(revision 17077)
@@ -77,5 +77,5 @@
         }
         combobox.setEditor(tf);
-        combobox.setSelectedItem(getItemToSelect(def, presetInitiallyMatches));
+        combobox.setSelectedItem(getItemToSelect(def, presetInitiallyMatches, false));
 
         if (key != null && ("colour".equals(key) || key.startsWith("colour:") || key.endsWith(":colour"))) {
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17076)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17077)
@@ -342,9 +342,9 @@
     }
 
-    protected Object getItemToSelect(String def, boolean presetInitiallyMatches) {
+    protected Object getItemToSelect(String def, boolean presetInitiallyMatches, boolean multi) {
         final Object itemToSelect;
         if (usage.hasUniqueValue()) {
             // all items have the same value (and there were no unset items)
-            originalValue = getListEntry(usage.getFirst());
+            originalValue = multi ? usage.getFirst() : getListEntry(usage.getFirst());
             itemToSelect = originalValue;
         } else if (def != null && usage.unused()) {
@@ -352,14 +352,18 @@
             if (!usage.hadKeys() || PROP_FILL_DEFAULT.get() || isForceUseLastAsDefault()) {
                 // selected osm primitives are untagged or filling default feature is enabled
-                PresetListEntry entry = getListEntry(def);
-                itemToSelect = entry == null ? "" : entry.getDisplayValue();
+                if (multi) {
+                    itemToSelect = def;
+                } else {
+                    PresetListEntry entry = getListEntry(def);
+                    itemToSelect = entry == null ? "" : entry.getDisplayValue();
+                }
             } else {
                 // selected osm primitives are tagged and filling default feature is disabled
                 itemToSelect = "";
             }
-            originalValue = getListEntry(DIFFERENT);
+            originalValue = multi ? DIFFERENT : getListEntry(DIFFERENT);
         } else if (usage.unused()) {
             // all items were unset (and so is default)
-            originalValue = getListEntry("");
+            originalValue = multi ? null : getListEntry("");
             if (LAST_VALUES.containsKey(key) && isUseLastAsDefault() && (!presetInitiallyMatches || isForceUseLastAsDefault())) {
                 itemToSelect = getListEntry(LAST_VALUES.get(key));
@@ -368,5 +372,5 @@
             }
         } else {
-            originalValue = getListEntry(DIFFERENT);
+            originalValue = multi ? DIFFERENT : getListEntry(DIFFERENT);
             itemToSelect = originalValue;
         }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 17076)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/MultiSelect.java	(revision 17077)
@@ -35,6 +35,5 @@
         ListCellRenderer<PresetListEntry> renderer = getListCellRenderer();
         list.setCellRenderer(renderer);
-        list.setSelectedItem(getItemToSelect(def, presetInitiallyMatches));
-
+        list.setSelectedItem(getItemToSelect(def, presetInitiallyMatches, true));
         JScrollPane sp = new JScrollPane(list);
         // if a number of rows has been specified in the preset,
