diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Changelog for gtk-sni-tray
 
+## 0.1.10.1
+
+- Fix menu popup positioning on Wayland: use `menuAttachToWidget` instead of
+  premature `widgetShowAll` so that `menuPopupAtWidget` can properly anchor the
+  popup surface to the tray icon.
+
 ## 0.1.10.0
 
 - Replace `libdbusmenu` usage (`gi-dbusmenugtk3`) with a pure Haskell
diff --git a/gtk-sni-tray.cabal b/gtk-sni-tray.cabal
--- a/gtk-sni-tray.cabal
+++ b/gtk-sni-tray.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           gtk-sni-tray
-version:        0.1.10.0
+version:        0.1.10.1
 synopsis:       A standalone StatusNotifierItem/AppIndicator tray
 description:    Please see the README on Github at <https://github.com/IvanMalison/gtk-sni-tray#readme>
 category:       System
diff --git a/src/StatusNotifier/Tray.hs b/src/StatusNotifier/Tray.hs
--- a/src/StatusNotifier/Tray.hs
+++ b/src/StatusNotifier/Tray.hs
@@ -367,7 +367,7 @@
                 -- serial. Also, anchor to the EventBox rather than the Image
                 -- (GtkImage is typically "no-window"), or the popup may be
                 -- positioned/realized incorrectly.
-                Gtk.widgetShowAll gtkMenu
+                Gtk.menuAttachToWidget gtkMenu eventBox Nothing
                 _ <- Gtk.onWidgetHide gtkMenu (Gtk.widgetDestroy gtkMenu)
                 evPtr <- ManagedPtr.unsafeManagedPtrCastPtr triggerEvent :: IO (Ptr Gdk.Event)
                 ManagedPtr.withTransient evPtr $ \ev ->
