diff --git a/Lib/idlelib/Icons/README.txt b/Lib/idlelib/Icons/README.txt
new file mode 100644
index 00000000000..8b471629ecb
--- /dev/null
+++ b/Lib/idlelib/Icons/README.txt
@@ -0,0 +1,9 @@
+The IDLE icons are from https://bugs.python.org/issue1490384
+
+Created by Andrew Clover.
+
+The original sources are available from Andrew's website:
+https://www.doxdesk.com/software/py/pyicons.html
+
+Various different formats and sizes are available at this GitHub Pull Request:
+https://github.com/python/cpython/pull/17473
diff --git a/Lib/idlelib/Icons/idle.icns b/Lib/idlelib/Icons/idle.icns
deleted file mode 100644
index f65e3130f0a..00000000000
Binary files a/Lib/idlelib/Icons/idle.icns and /dev/null differ
diff --git a/Lib/idlelib/Icons/idle_256.png b/Lib/idlelib/Icons/idle_256.png
new file mode 100644
index 00000000000..99ffa6fad4a
Binary files /dev/null and b/Lib/idlelib/Icons/idle_256.png differ
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index 43fb597c2ba..66ae0f7435d 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -1485,9 +1485,14 @@ def main():
iconfile = os.path.join(icondir, 'idle.ico')
root.wm_iconbitmap(default=iconfile)
elif not macosx.isAquaTk():
- ext = '.png' if TkVersion >= 8.6 else '.gif'
+ if TkVersion >= 8.6:
+ ext = '.png'
+ sizes = (16, 32, 48, 256)
+ else:
+ ext = '.gif'
+ sizes = (16, 32, 48)
iconfiles = [os.path.join(icondir, 'idle_%d%s' % (size, ext))
- for size in (16, 32, 48)]
+ for size in sizes]
icons = [PhotoImage(master=root, file=iconfile)
for iconfile in iconfiles]
root.wm_iconphoto(True, *icons)
diff --git a/Misc/NEWS.d/next/IDLE/2019-12-05-14-20-53.bpo-38439.j_L2PI.rst b/Misc/NEWS.d/next/IDLE/2019-12-05-14-20-53.bpo-38439.j_L2PI.rst
new file mode 100644
index 00000000000..de048d005ce
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2019-12-05-14-20-53.bpo-38439.j_L2PI.rst
@@ -0,0 +1,2 @@
+Add a 256×256 pixel IDLE icon to support more modern environments. Created by Andrew Clover.
+Delete the unused macOS idle.icns icon file.
diff --git a/PCbuild/lib.pyproj b/PCbuild/lib.pyproj
index d4351dec3be..0237b8cc855 100644
--- a/PCbuild/lib.pyproj
+++ b/PCbuild/lib.pyproj
@@ -1585,6 +1585,7 @@
+