Index: src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 17264)
+++ src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(working copy)
@@ -11,8 +11,6 @@
 import java.awt.FlowLayout;
 import java.awt.GraphicsEnvironment;
 import java.awt.event.ActionEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Collection;
@@ -182,12 +180,20 @@
     protected final void build() {
         getContentPane().setLayout(new BorderLayout());
         updateTitle();
-        spTagConflictTypes = new AutoAdjustingSplitPane(JSplitPane.VERTICAL_SPLIT);
+        spTagConflictTypes = new AutoAdjustingSplitPane(JSplitPane.VERTICAL_SPLIT) {
+            @Override
+            public void propertyChange(PropertyChangeEvent evt) {
+                // see #12536
+                if (JSplitPane.DIVIDER_LOCATION_PROPERTY.equals(evt.getPropertyName())) {
+                    adjustDividerLocation();
+                }
+                super.propertyChange(evt);
+            }
+        };
         spTagConflictTypes.setTopComponent(buildTagConflictResolverPanel());
         spTagConflictTypes.setBottomComponent(buildRelationMemberConflictResolverPanel());
         pnlButtons = buildButtonPanel();
         getContentPane().add(pnlButtons, BorderLayout.SOUTH);
-        addWindowListener(new AdjustDividerLocationAction());
         HelpUtil.setHelpContext(getRootPane(), ht("/"));
         InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
     }
@@ -343,7 +349,7 @@
         }
 
         getContentPane().add(pnlButtons, BorderLayout.SOUTH);
-        validate();
+        getContentPane().validate();
         adjustDividerLocation();
         pnlRelationMemberConflictResolver.prepareForEditing();
     }
@@ -444,17 +450,17 @@
     private void adjustDividerLocation() {
         int numTagDecisions = modelTagConflictResolver.getNumDecisions();
         int numRelationDecisions = modelRelConflictResolver.getNumDecisions();
-        if (numTagDecisions > 0 && numRelationDecisions > 0) {
-            double nTop = 1.0 + numTagDecisions;
-            double nBottom = 2.5 + numRelationDecisions;
-            spTagConflictTypes.setDividerLocation(nTop/(nTop+nBottom));
-        }
-    }
 
-    class AdjustDividerLocationAction extends WindowAdapter {
-        @Override
-        public void windowOpened(WindowEvent e) {
-            adjustDividerLocation();
+
+        if (numTagDecisions > 0 && numRelationDecisions > 0 && getHeight() > 0) {
+            // see #12536: Take the space for buttons and checkbox into account.
+            double hPopup = getHeight();
+            double h1 = (pnlRelationMemberConflictResolver.getHeight() + pnlTagConflictResolver.getHeight());
+            double correction = h1 > 0 ? ((hPopup-h1)/hPopup) : 0;
+
+            double nTop = 3.5 + numTagDecisions;
+            double nBottom = 5.5 + numRelationDecisions;
+            spTagConflictTypes.setDividerLocation(nTop/(nTop+nBottom) - correction);
         }
     }
 
