diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c
index e3c16b6..3d8f37d 100644
--- a/plugins/xrandr/gsd-xrandr-manager.c
+++ b/plugins/xrandr/gsd-xrandr-manager.c
@@ -28,6 +28,7 @@
 #include <unistd.h>
 #include <string.h>
 #include <errno.h>
+#include <sys/stat.h>
 
 #include <locale.h>
 
@@ -1593,6 +1594,26 @@ out:
         g_free (intended_filename);
 }
 
+static gboolean
+user_configuration_is_newer_than_xorg (GsdXrandrManager *manager)
+{
+        char *intended_filename;
+        int result;
+        struct stat xorg_stat, user_stat;
+
+        if (stat ("/etc/X11/xorg.conf", &xorg_stat) != 0)
+                return TRUE;
+
+        intended_filename = gnome_rr_config_get_intended_filename ();
+        result = stat (intended_filename, &user_stat);
+        g_free (intended_filename);
+
+        if (result != 0)
+                return FALSE;
+
+        return user_stat.st_mtime > xorg_stat.st_mtime;
+}
+
 gboolean
 gsd_xrandr_manager_start (GsdXrandrManager *manager,
                           GError          **error)
@@ -1632,7 +1653,8 @@ gsd_xrandr_manager_start (GsdXrandrManager *manager,
                 gdk_error_trap_pop ();
         }
 
-        apply_stored_configuration_at_startup (manager);
+        if (user_configuration_is_newer_than_xorg (manager))
+                apply_stored_configuration_at_startup (manager);
 
         gdk_window_add_filter (gdk_get_default_root_window(),
                                (GdkFilterFunc)event_filter,
