// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
 #endif
     ::WinSetWindowULong(GetHwnd(), QWL_USER, (LONG)this);
     fnWndProcSpinCtrl = (WXFARPROC)::WinSubclassWindow(m_hWnd, (PFNWP)wxSpinCtrlWndProc);
 #endif
-    // OS/2 PM does not really have system metrics so we'll just set  it to
-    // 24x20 which is the size of the buttons and the borders.
-    // Also we have no horizontal spin buttons.
+    // OS/2 PM does not really have system metrics so we'll just set it to
+    // a square based on its height.
-    return (wxSize(24,20));
+    RECTL   vRect;
+    ::WinQueryWindowRect(GetHwnd(),&vRect);
+    return wxSize(vRect.yTop,vRect.yTop);
 } // end of wxSpinButton::DoGetBestSize
 
 // ----------------------------------------------------------------------------
 } // end of wxSpinButton::DoGetBestSize
 
 // ----------------------------------------------------------------------------
-    wxSpinEvent                     vEvent( wxEVT_SCROLL_THUMBTRACK
-                                           ,m_windowId
-                                          );
-    int                             nVal = (int)wPos;    // cast is important for negative values!
+    wxSpinEvent vEvent( wxEVT_SCROLL_THUMBTRACK, m_windowId );
+    int nVal = (int)wPos;    // cast is important for negative values!