diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
index 9ef4c5b..94da834 100644
--- a/daemon/gdm-session-worker.c
+++ b/daemon/gdm-session-worker.c
@@ -1515,6 +1515,16 @@ gdm_session_worker_load_env_d (GdmSessionWorker *worker)
         g_object_unref (dir);
 }
 
+static void
+gdm_session_worker_forward_var (GdmSessionWorker *worker, char const *var)
+{
+        char const *value = g_getenv(var);
+        if (value != NULL) {
+                g_debug ("forwarding %s= %s", var, value);
+                gdm_session_worker_set_environment_variable(worker, var, value);
+        }
+}
+
 static gboolean
 gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
                                   GError           **error)
@@ -1559,6 +1569,9 @@ gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
                 goto out;
         }
 
+        gdm_session_worker_forward_var(worker, "GDM_X_SERVER_EXTRA_ARGS");
+        gdm_session_worker_forward_var(worker, "GDM_X_SESSION_WRAPPER");
+
         gdm_session_worker_update_environment_from_passwd_info (worker,
                                                                 uid,
                                                                 gid,
