diff --git a/src/common/config.py b/src/common/config.py
index a5f7b3d58510ae0b743c192236c52cdc28d2d938..7f5bd2de5cd6a4becd60136a0f453b80e3dcd03d 100644
--- a/src/common/config.py
+++ b/src/common/config.py
@@ -147,6 +147,7 @@ class Config:
             'single-msg-y-position': [opt_int, 0],
             'single-msg-width': [opt_int, 400],
             'single-msg-height': [opt_int, 280],
+            'save-roster-position': [opt_bool, True, _('If true, Gajim will save roster position when hiding roster, and restore it when showing roster.')],
             'roster_x-position': [ opt_int, 0 ],
             'roster_y-position': [ opt_int, 0 ],
             'roster_width': [ opt_int, 200 ],
diff --git a/src/roster_window.py b/src/roster_window.py
index 5f7ea5d2ec81d0d428f26301850eae0ed86131ee..b7ef6f054459eccf02b0d9ef303a974277c032fe 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -2337,9 +2337,10 @@ class RosterWindow:
         # in case show_roster_on_start is False and roster is never shown
         # window.window is None
         if self.window.window is not None:
-            x, y = self.window.window.get_root_origin()
-            gajim.config.set('roster_x-position', x)
-            gajim.config.set('roster_y-position', y)
+            if gajim.config.get('save-roster-position'):
+                x, y = self.window.window.get_root_origin()
+                gajim.config.set('roster_x-position', x)
+                gajim.config.set('roster_y-position', y)
             width, height = self.window.get_size()
             # For the width use the size of the vbox containing the tree and
             # status combo, this will cancel out any hpaned width
@@ -6150,9 +6151,10 @@ class RosterWindow:
         gtkgui_helpers.resize_window(self.window,
             gajim.config.get('roster_width'),
             gajim.config.get('roster_height'))
-        gtkgui_helpers.move_window(self.window,
-            gajim.config.get('roster_x-position'),
-            gajim.config.get('roster_y-position'))
+        if gajim.config.get('save-roster-position'):
+            gtkgui_helpers.move_window(self.window,
+                gajim.config.get('roster_x-position'),
+                gajim.config.get('roster_y-position'))
 
         self.popups_notification_height = 0
         self.popup_notification_windows = []
diff --git a/src/statusicon.py b/src/statusicon.py
index 16369353d7413a2ac9de43eef64dc2c00718e07c..f580f423846bd8f39d1c781bb08b7f236e1398a2 100644
--- a/src/statusicon.py
+++ b/src/statusicon.py
@@ -396,7 +396,8 @@ class StatusIcon:
 
                 # we could be in another VD right now. eg vd2
                 # and we want to show it in vd2
-                if not gtkgui_helpers.possibly_move_window_in_current_desktop(win):
+                if not gtkgui_helpers.possibly_move_window_in_current_desktop(
+                win) and gajim.config.get('save-roster-position'):
                     x, y = win.get_position()
                     gajim.config.set('roster_x-position', x)
                     gajim.config.set('roster_y-position', y)
@@ -404,9 +405,10 @@ class StatusIcon:
             else:
                 if not win.get_property('visible'):
                     win.show_all()
-                    gtkgui_helpers.move_window(win,
-                        gajim.config.get('roster_x-position'),
-                        gajim.config.get('roster_y-position'))
+                    if gajim.config.get('save-roster-position'):
+                        gtkgui_helpers.move_window(win,
+                            gajim.config.get('roster_x-position'),
+                            gajim.config.get('roster_y-position'))
                 if not gajim.config.get('roster_window_skip_taskbar'):
                     win.set_property('skip-taskbar-hint', False)
                 win.present_with_time(gtk.get_current_event_time())
@@ -418,7 +420,8 @@ class StatusIcon:
         if not event:
             return
         win = gajim.interface.roster.window
-        if not win.get_property('visible'):
+        if not win.get_property('visible') and gajim.config.get(
+        'save-roster-position'):
             gtkgui_helpers.move_window(win,
                 gajim.config.get('roster_x-position'),
                 gajim.config.get('roster_y-position'))