diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst
index c51cf19..bd24695 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -281,16 +281,16 @@
    menu. For more, see
    :ref:`Setting preferences <preferences>` under Help and preferences.
 
-Zoom/Restore Height
-   Toggles the window between normal size and maximum height. The initial size
-   defaults to 40 lines by 80 chars unless changed on the General tab of the
-   Configure IDLE dialog.
-
 Show/Hide Code Context (Editor Window only)
    Open a pane at the top of the edit window which shows the block context
    of the code which has scrolled above the top of the window.  See
    :ref:`Code Context <code-context>` in the Editing and Navigation section below.
 
+Zoom/Restore Height
+   Toggles the window between normal size and maximum height. The initial size
+   defaults to 40 lines by 80 chars unless changed on the General tab of the
+   Configure IDLE dialog.
+
 Window menu (Shell and Editor)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/Lib/idlelib/help.html b/Lib/idlelib/help.html
index bc287d6..228b319 100644
--- a/Lib/idlelib/help.html
+++ b/Lib/idlelib/help.html
@@ -313,14 +313,14 @@
 configuration dialog by selecting Preferences in the application
 menu. For more, see
 <a class="reference internal" href="#preferences"><span class="std std-ref">Setting preferences</span></a> under Help and preferences.</dd>
-<dt>Zoom/Restore Height</dt>
-<dd>Toggles the window between normal size and maximum height. The initial size
-defaults to 40 lines by 80 chars unless changed on the General tab of the
-Configure IDLE dialog.</dd>
 <dt>Show/Hide Code Context (Editor Window only)</dt>
 <dd>Open a pane at the top of the edit window which shows the block context
 of the code which has scrolled above the top of the window.  See
 <a class="reference internal" href="#code-context"><span class="std std-ref">Code Context</span></a> in the Editing and Navigation section below.</dd>
+<dt>Zoom/Restore Height</dt>
+<dd>Toggles the window between normal size and maximum height. The initial size
+defaults to 40 lines by 80 chars unless changed on the General tab of the
+Configure IDLE dialog.</dd>
 </dl>
 </div>
 <div class="section" id="window-menu-shell-and-editor">
@@ -943,7 +943,7 @@
 <br />
     <br />
 
-    Last updated on May 19, 2019.
+    Last updated on May 25, 2019.
     <a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
     <br />
 
diff --git a/Lib/idlelib/zoomheight.py b/Lib/idlelib/zoomheight.py
index 35e285f..523f5d5 100644
--- a/Lib/idlelib/zoomheight.py
+++ b/Lib/idlelib/zoomheight.py
@@ -28,26 +28,14 @@
         return
     width, height, x, y = map(int, m.groups())
     newheight = top.winfo_screenheight()
-    if sys.platform == 'win32':
-        newy = 0
-        newheight = newheight - 72
 
-    elif macosx.isAquaTk():
-        # The '88' below is a magic number that avoids placing the bottom
-        # of the window below the panel on my machine. I don't know how
-        # to calculate the correct value for this with tkinter.
-        newy = 22
-        newheight = newheight - newy - 88
-
-    else:
-        #newy = 24
-        newy = 0
-        #newheight = newheight - 96
-        newheight = newheight - 88
-    if height >= newheight:
-        newgeom = ""
-    else:
-        newgeom = "%dx%d+%d+%d" % (width, newheight, x, newy)
+    # The constants below for Windows and Mac Aqua are visually determined
+    # to avoid taskbar or menubar and app icons.
+    newy, bot_y = ((0, 72) if sys.platform == 'win32' else
+                   (22, 88) if macosx.isAquaTk() else
+                   (0, 88) ) # Guess for anything else.
+    newheight = newheight - newy - bot_y
+    newgeom = '' if height >= newheight else f"{width}x{newheight}+{x}+{newy}"
     top.wm_geometry(newgeom)
     return newgeom != ""
 
