diff -urw a/xfsettingsd/displays.c b/xfsettingsd/displays.c --- a/xfsettingsd/displays.c 2013-09-23 19:47:03.000000000 +0200 +++ b/xfsettingsd/displays.c 2014-01-31 17:42:11.887856974 +0100 @@ -565,6 +565,7 @@ Rotation rot; gint x, y, n, m, int_value; gboolean active; + int width, height; g_assert (XFCE_IS_DISPLAYS_HELPER (helper) && helper->resources && output); @@ -671,6 +672,7 @@ str_value = ""; else str_value = g_value_get_string (value); + sscanf(str_value, "%dx%d", &width, &height); /* refresh rate */ g_snprintf (property, sizeof (property), RRATE_PROP, scheme, output->info->name); @@ -696,8 +698,9 @@ ((gdouble) helper->resources->modes[m].hTotal * (gdouble) helper->resources->modes[m].vTotal); /* find the mode corresponding to the saved values */ - if (rint (rate) == rint (output_rate) - && (g_strcmp0 (helper->resources->modes[m].name, str_value) == 0)) + if (rint (rate * 10) == rint (output_rate * 10) + && helper->resources->modes[m].width == width + && helper->resources->modes[m].height == height) { valid_mode = helper->resources->modes[m].id; break;