diff --git a/src/settings.c b/src/settings.c
index 3591c4d7dbc4aa70cb8a7cfe7035f33398310fc4..7a10be164d4e33abe167a50d5c30f66415b301a3 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -685,9 +685,14 @@ gboolean loadSettings(void)
 
     if(params.workspace_count < 0)
     {
-        params.workspace_count = abs(TOINT(getValue("workspace_count", rc)));
-        setGnomeHint(dpy, root, win_workspace_count, params.workspace_count);
-	setNetHint(dpy, root, net_number_of_desktops, params.workspace_count);
+        gint workspace_count;
+        workspace_count = abs(TOINT(getValue("workspace_count", rc)));
+	if (workspace_count < 0)
+	{
+	    workspace_count = 0;
+	}
+        g_message("workspace count not set, using rc value: %i", workspace_count);
+        workspaceSetCount(workspace_count);
     }
 
     params.wrap_workspaces = !g_ascii_strcasecmp("true", getValue("wrap_workspaces", rc));
@@ -783,16 +788,6 @@ gboolean initSettings(void)
         initPixmap(&params.title[i][ACTIVE]);
         initPixmap(&params.title[i][INACTIVE]);
     }
-    if(getNetHint(dpy, root, net_number_of_desktops, &val))
-    {
-        params.workspace_count = (int) val;
-	setGnomeHint(dpy, root, win_workspace_count, params.workspace_count);
-    }
-    else if(getGnomeHint(dpy, root, win_workspace_count, &val))
-    {
-        params.workspace_count = (int) val;
-	setNetHint(dpy, root, net_number_of_desktops, params.workspace_count);
-    }
     if(!mcs_client_check_manager(dpy, screen, "xfce-mcs-manager"))
     {
         g_warning("MCS manager not running");
@@ -809,6 +804,15 @@ gboolean initSettings(void)
 
     mcs_initted = TRUE;
 
+    if(getNetHint(dpy, root, net_number_of_desktops, &val))
+    {
+        workspaceSetCount(val);
+    }
+    else if(getGnomeHint(dpy, root, win_workspace_count, &val))
+    {
+        workspaceSetCount(val);
+    }
+    
     if(!loadSettings())
     {
         return FALSE;
diff --git a/src/workspaces.c b/src/workspaces.c
index 2d6ed9c15eb0ec2b1773543bc8eae5df3b53a001..03ee11f0a43801067a54b16223d2cab1e4dc2c9f 100644
--- a/src/workspaces.c
+++ b/src/workspaces.c
@@ -129,7 +129,6 @@ void workspaceSetCount(int count)
 {
     Client *c;
     int i;
-    unsigned long data[1];
 
     DBG("entering workspaceSetCount\n");
 
@@ -143,8 +142,7 @@ void workspaceSetCount(int count)
     }
 
     setGnomeHint(dpy, root, win_workspace_count, count);
-    data[0] = count;
-    XChangeProperty(dpy, root, net_number_of_desktops, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)data, 1);
+    setNetHint(dpy, root, net_number_of_desktops, count);
     params.workspace_count = count;
 
     for(c = clients, i = 0; i < client_count; c = c->next, i++)