diff --git a/src/dialogs.py b/src/dialogs.py
index 2224397a112ae15bd2db7576818b3a9ff5f37d8c..f9dfb325e9094c75a4abad0ee5513c7d1b749427 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -2748,6 +2748,7 @@ class PopupNotificationWindow:
         self.account = account
         self.jid = jid
         self.msg_type = msg_type
+        self.index = len(gajim.interface.roster.popup_notification_windows)
 
         xml = gtkgui_helpers.get_gtk_builder('popup_notification_window.ui')
         self.window = xml.get_object('popup_notification_window')
@@ -2832,12 +2833,15 @@ class PopupNotificationWindow:
         self.window.destroy()
 
         if len(gajim.interface.roster.popup_notification_windows) > 0:
-            # we want to remove the first window added in the list
-            gajim.interface.roster.popup_notification_windows.pop(0)
+            # we want to remove the destroyed window from the list
+            gajim.interface.roster.popup_notification_windows.pop(self.index)
 
         # move the rest of popup windows
         gajim.interface.roster.popups_notification_height = 0
+        current_index = 0
         for window_instance in gajim.interface.roster.popup_notification_windows:
+            window_instance.index = current_index
+            current_index += 1
             window_width, window_height = window_instance.window.get_size()
             gajim.interface.roster.popups_notification_height += window_height
             window_instance.window.move(gtk.gdk.screen_width() - window_width,