diff --git a/src/config.py b/src/config.py
index a7000ea67d9ff837740a3f2061d138e8cd3f4c37..a85e7d80d5d37218c8fc8d402827ddf33bb701ac 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2429,7 +2429,8 @@ class AccountsWindow:
                         keyID[0])
 
         dialogs.ChooseGPGKeyDialog(_('OpenPGP Key Selection'),
-                _('Choose your OpenPGP key'), secret_keys, on_key_selected)
+            _('Choose your OpenPGP key'), secret_keys, on_key_selected,
+            transient_for=self.window)
 
     def on_use_gpg_agent_checkbutton_toggled(self, widget):
         self.on_checkbutton_toggled(widget, 'use_gpg_agent')
diff --git a/src/dialogs.py b/src/dialogs.py
index df0b1cab4cf867db9d2e1c6f88aefeee3641052d..cefd8ff1e1705e9f7e56e2c3ceea3d7f411e634a 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -277,12 +277,14 @@ class ChooseGPGKeyDialog:
     """
 
     def __init__(self, title_text, prompt_text, secret_keys, on_response,
-                             selected=None):
+            selected=None, transient_for=None):
         '''secret_keys : {keyID: userName, ...}'''
         self.on_response = on_response
         xml = gtkgui_helpers.get_gtk_builder('choose_gpg_key_dialog.ui')
         self.window = xml.get_object('choose_gpg_key_dialog')
         self.window.set_title(title_text)
+        if not transient_for:
+            self.window.set_transient_for(gajim.interface.roster.window)
         self.keys_treeview = xml.get_object('keys_treeview')
         prompt_label = xml.get_object('prompt_label')
         prompt_label.set_text(prompt_text)