diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7010f9319b385da4246d51b06d9500163532557a..424d60d379ff7759421f894d0eef4aa06f3f6588 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1305,6 +1305,8 @@ if(APPLE AND ENABLE_APP_BUNDLE)
           RENAME GmshGeo.icns)
   install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsMsh.icns DESTINATION .
           RENAME GmshMsh.icns)
+  install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsSol.icns DESTINATION .
+          RENAME GmshSol.icns)
   install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIconsPos.icns DESTINATION .
           RENAME GmshPos.icns)
   set(CPACK_PACKAGE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/Fltk/MacIcons.icns)
diff --git a/Fltk/MacIcons.icns b/Fltk/MacIcons.icns
index 803849e61210bc4838f8533dbd490d0907ac6510..b9fc35ef0165633b6fef708647270b56b5eb75e1 100644
Binary files a/Fltk/MacIcons.icns and b/Fltk/MacIcons.icns differ
diff --git a/Fltk/MacIconsGeo.icns b/Fltk/MacIconsGeo.icns
index 6ac95423b260251013e6437500f32ad1cdd1697f..6f9987446c645b673e0e0eaea9e51590a4dc5c89 100644
Binary files a/Fltk/MacIconsGeo.icns and b/Fltk/MacIconsGeo.icns differ
diff --git a/Fltk/MacIconsMsh.icns b/Fltk/MacIconsMsh.icns
index 59c81f49474649280cc49268d963d739f9507b46..cb7d456db6955517c6f2689f42998690bd26a6f3 100644
Binary files a/Fltk/MacIconsMsh.icns and b/Fltk/MacIconsMsh.icns differ
diff --git a/Fltk/MacIconsPos.icns b/Fltk/MacIconsPos.icns
index 353bccbd7ec47ecd8efd4d96a792767455234f3c..56add0b9263495064da4cd9e4ef039f1cfdbceae 100644
Binary files a/Fltk/MacIconsPos.icns and b/Fltk/MacIconsPos.icns differ
diff --git a/Fltk/MacIconsSol.icns b/Fltk/MacIconsSol.icns
new file mode 100644
index 0000000000000000000000000000000000000000..2cb59fd354f7eb4481476bd993d79e96403e8249
Binary files /dev/null and b/Fltk/MacIconsSol.icns differ
diff --git a/utils/icons/gmsh-document.xcf b/utils/icons/gmsh-document.xcf
deleted file mode 100644
index d017435fa3154f1535cd8403a1c61ff25d579a6b..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh-document.xcf and /dev/null differ
diff --git a/utils/icons/gmsh128x128-smooth.png b/utils/icons/gmsh128x128-smooth.png
deleted file mode 100644
index 1de6f3e4503b00511c2aba9261f0227eb60bb2ad..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh128x128-smooth.png and /dev/null differ
diff --git a/utils/icons/gmsh16x16-smooth.png b/utils/icons/gmsh16x16-smooth.png
deleted file mode 100644
index 32159d7aa57cab8e2a4b2b34934fd49e38175d5b..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh16x16-smooth.png and /dev/null differ
diff --git a/utils/icons/gmsh32x32-smooth.png b/utils/icons/gmsh32x32-smooth.png
deleted file mode 100644
index 8042bf81d854b50708eb5183ba50211c3227e22f..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh32x32-smooth.png and /dev/null differ
diff --git a/utils/icons/gmsh48x48-smooth.png b/utils/icons/gmsh48x48-smooth.png
deleted file mode 100644
index c2dbf7c4fcc3c470ed13968428ac3e06451e4376..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh48x48-smooth.png and /dev/null differ
diff --git a/utils/icons/gmsh64x64-smooth.png b/utils/icons/gmsh64x64-smooth.png
deleted file mode 100644
index 7ef5f4a711d95670cacc3b61353275e31737e976..0000000000000000000000000000000000000000
Binary files a/utils/icons/gmsh64x64-smooth.png and /dev/null differ
diff --git a/utils/icons/gmsh_1024x1024.png b/utils/icons/gmsh_1024x1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..1af33e598de5d399faf5950a014dd739af9432d5
Binary files /dev/null and b/utils/icons/gmsh_1024x1024.png differ
diff --git a/utils/icons/gmsh_cad_1024x1024.png b/utils/icons/gmsh_cad_1024x1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..f14a640028a448015e1a52ea41b7f6124f2c5268
Binary files /dev/null and b/utils/icons/gmsh_cad_1024x1024.png differ
diff --git a/utils/icons/gmsh_mesh_1024x1024.png b/utils/icons/gmsh_mesh_1024x1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..61ecd46b5ea8c0da5b5e9aab2513318cd3424124
Binary files /dev/null and b/utils/icons/gmsh_mesh_1024x1024.png differ
diff --git a/utils/icons/gmsh_post_1024x1024.png b/utils/icons/gmsh_post_1024x1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c780ffb6e410802a57d378374a3c952fb0f87d4
Binary files /dev/null and b/utils/icons/gmsh_post_1024x1024.png differ
diff --git a/utils/icons/gmsh_solver_1024x1024.png b/utils/icons/gmsh_solver_1024x1024.png
new file mode 100644
index 0000000000000000000000000000000000000000..4bc6cd53677c75ed7edb31c5229dfe483a95ad67
Binary files /dev/null and b/utils/icons/gmsh_solver_1024x1024.png differ
diff --git a/utils/icons/make_icon.sh b/utils/icons/make_icon.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0ca747d80dfa9c0ec86a80974712cf3f7f28ff7e
--- /dev/null
+++ b/utils/icons/make_icon.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# create a MacOS icon from a 1024x1024 png master
+
+if [ $# -lt 2 ]; then
+  echo "Usage: $0 pngfile iconname" 1>&2;
+  echo "Example: $0 gmsh_1024x1024.png MacIcons" 1>&2;
+  exit 1;
+fi
+
+mkdir $2.iconset
+cp $1 $2.iconset/icon_512x512\@2x.png
+convert -scale 512 $1 $2.iconset/icon_512x512.png
+convert -scale 512 $1 $2.iconset/icon_256x256\@2x.png
+convert -scale 256 $1 $2.iconset/icon_256x256.png
+convert -scale 256 $1 $2.iconset/icon_128x128\@2x.png
+convert -scale 128 $1 $2.iconset/icon_128x128.png
+convert -scale 64 $1 $2.iconset/icon_32x32\@2x.png
+convert -scale 32 $1 $2.iconset/icon_32x32.png
+convert -scale 32 $1 $2.iconset/icon_16x16\@2x.png
+convert -scale 16 $1 $2.iconset/icon_16x16.png
+iconutil -c icns $2.iconset
diff --git a/utils/icons/gmsh128x128.png b/utils/icons/solid_128x128.png
similarity index 100%
rename from utils/icons/gmsh128x128.png
rename to utils/icons/solid_128x128.png
diff --git a/utils/icons/gmsh16x16.png b/utils/icons/solid_16x16.png
similarity index 100%
rename from utils/icons/gmsh16x16.png
rename to utils/icons/solid_16x16.png
diff --git a/utils/icons/gmsh32x32.png b/utils/icons/solid_32x32.png
similarity index 100%
rename from utils/icons/gmsh32x32.png
rename to utils/icons/solid_32x32.png
diff --git a/utils/icons/gmsh48x48.png b/utils/icons/solid_48x48.png
similarity index 100%
rename from utils/icons/gmsh48x48.png
rename to utils/icons/solid_48x48.png
diff --git a/utils/icons/gmsh64x64.png b/utils/icons/solid_64x64.png
similarity index 100%
rename from utils/icons/gmsh64x64.png
rename to utils/icons/solid_64x64.png
diff --git a/utils/misc/gmsh_app.plist b/utils/misc/gmsh_app.plist
index e4558442ff700be1f413112064b98a0200f5db60..66d66688554c19117ab2e8bd8f6890f3360ae9d8 100644
--- a/utils/misc/gmsh_app.plist
+++ b/utils/misc/gmsh_app.plist
@@ -43,7 +43,7 @@
         <key>CFBundleTypeExtensions</key><array>
           <string>pro</string>
           <string>ol</string></array>
-        <key>CFBundleTypeIconFile</key><string>GmshPos.icns</string>
+        <key>CFBundleTypeIconFile</key><string>GmshSol.icns</string>
         <key>CFBundleTypeName</key><string>Gmsh Solver File</string>
         <key>CFBundleTypeOSTypes</key><array><string>GSOL</string></array>
         <key>CFBundleTypeRole</key><string>Viewer</string>