diff --git a/data/gui/profile_window.ui b/data/gui/profile_window.ui
index 2fb532e5e9f6f0e6921ba46db4696c8775f26384..88ba214e4799d19271db273cb88a2b355f6ad106 100644
--- a/data/gui/profile_window.ui
+++ b/data/gui/profile_window.ui
@@ -4,7 +4,6 @@
   <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkWindow" id="profile_window">
     <property name="title" translatable="yes">Personal Information</property>
-    <property name="window_position">center-on-parent</property>
     <property name="type_hint">dialog</property>
     <signal name="destroy" handler="on_profile_window_destroy"/>
     <signal name="key_press_event" handler="on_profile_window_key_press_event"/>
diff --git a/src/config.py b/src/config.py
index 9b306e3c030302cbad66537ba60fd25bdedfe0eb..e1aeb4d654a00cb8feba2aeb5f5411164478390c 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2459,7 +2459,7 @@ class AccountsWindow:
         jid = gajim.get_jid_from_account(self.current_account)
         if 'profile' not in gajim.interface.instances[self.current_account]:
             gajim.interface.instances[self.current_account]['profile'] = \
-                profile_window.ProfileWindow(self.current_account, self.window)
+                profile_window.ProfileWindow(self.current_account, transient_for=self.window)
             gajim.connections[self.current_account].request_vcard(jid)
 
     def on_checkbutton_toggled(self, widget, config_name,
diff --git a/src/dialogs.py b/src/dialogs.py
index 8e831b4e73fe9f6db000727bd890e14ac0b5f6fd..b3faf812196219a4994c2ce48e9f70b4ebca6dab 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -283,8 +283,7 @@ class ChooseGPGKeyDialog:
         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.window.set_transient_for(transient_for)
         self.keys_treeview = xml.get_object('keys_treeview')
         prompt_label = xml.get_object('prompt_label')
         prompt_label.set_text(prompt_text)
diff --git a/src/gui_interface.py b/src/gui_interface.py
index c2d11554293c75b473f8e254620bca9c8226fe21..df0557dcb21c38266815a37906403869751796c0 100644
--- a/src/gui_interface.py
+++ b/src/gui_interface.py
@@ -237,7 +237,7 @@ class Interface:
         jid = gajim.get_jid_from_account(account)
         if 'profile' not in self.instances[account]:
             self.instances[account]['profile'] = \
-                    profile_window.ProfileWindow(account)
+            profile_window.ProfileWindow(account, gajim.interface.roster.window)
             gajim.connections[account].request_vcard(jid)
 
     def handle_gc_error(self, gc_control, pritext, sectext):
diff --git a/src/profile_window.py b/src/profile_window.py
index 00096ddfea93a6bd940164c7d1a201afb79087a5..5c506e941512593f5ec5ce81293f6cfd2484ca4f 100644
--- a/src/profile_window.py
+++ b/src/profile_window.py
@@ -45,8 +45,7 @@ class ProfileWindow:
     def __init__(self, account, transient_for=None):
         self.xml = gtkgui_helpers.get_gtk_builder('profile_window.ui')
         self.window = self.xml.get_object('profile_window')
-        if not transient_for:
-            self.window.set_transient_for(gajim.interface.roster.window)
+        self.window.set_transient_for(transient_for)
         self.progressbar = self.xml.get_object('progressbar')
         self.statusbar = self.xml.get_object('statusbar')
         self.context_id = self.statusbar.get_context_id('profile')
diff --git a/src/roster_window.py b/src/roster_window.py
index 49e407e739c7859c55d4efb44acf1742acab7b01..0f2b2ae61ff8a4dcdf9e38f585536762e880ceef 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -3215,7 +3215,7 @@ class RosterWindow:
 
         dialogs.ChooseGPGKeyDialog(_('Assign OpenPGP Key'),
             _('Select a key to apply to the contact'), public_keys,
-            on_key_selected, selected=keyID)
+            on_key_selected, selected=keyID, transient_for=self.window)
 
     def on_set_custom_avatar_activate(self, widget, contact, account):
         def on_ok(widget, path_to_file):