diff --git a/data/themes/Industrial/gtk.css b/data/themes/Industrial/gtk.css
index 179f0d6..f8e6432 100644
--- a/data/themes/Industrial/gtk.css
+++ b/data/themes/Industrial/gtk.css
@@ -17,6 +17,7 @@
 	color: #000000;
 }
 
+#bottom_pane label,
 #bottom_pane GtkLabel {
 	font: Sans 12;
 	color: #9E9D9B;
diff --git a/src/greeter-gdk.c b/src/greeter-gdk.c
index 1abbefa..ad3267a 100644
--- a/src/greeter-gdk.c
+++ b/src/greeter-gdk.c
@@ -22,6 +22,7 @@
 
 #define XLIB_ILLEGAL_ACCESS
 
+#include <gtk/gtk.h>
 #include <gdk/gdk.h>
 #include <gdk/gdkx.h>
 #include <gdk/gdkkeysyms.h>
@@ -88,12 +89,14 @@ static void on_ui_expose(void)
 	}
 	
 	cr=gdk_cairo_create(win);
+#if GTK_CHECK_VERSION(3,0,0)
 	cairo_pattern_t *pattern=gdk_window_get_background_pattern(win);
 	if(pattern)
 	{
 		cairo_set_source(cr,pattern);
 		cairo_paint(cr);
 	}
+#endif
 
 	gdk_cairo_set_source_color(cr, &bg);
 	cairo_rectangle(cr, rc.x, rc.y, rc.width, rc.height);
diff --git a/src/greeter.c b/src/greeter.c
index 10b7f3f..03503b6 100644
--- a/src/greeter.c
+++ b/src/greeter.c
@@ -146,7 +146,7 @@ static void switch_to_input_user(void)
 		if(user_list_scrolled)
 			gtk_widget_show(user_list_scrolled);
 		else
-			gtk_widget_hide(user_list);
+			gtk_widget_show(user_list);
 		gtk_widget_grab_focus(user_list);
 	}
 	else
diff --git a/src/lxdm.c b/src/lxdm.c
index a37f051..722936f 100644
--- a/src/lxdm.c
+++ b/src/lxdm.c
@@ -488,6 +490,9 @@ static char *lxsession_xserver_command(LXSession *s)
 	{
 		arg[arc++] = g_strdup("-nolisten");
 		arg[arc++] = g_strdup("tcp");
+	} else {
+		arg[arc++] = g_strdup("-listen");
+		arg[arc++] = g_strdup("tcp");
 	}
 	if(!novtswitch)
 	{
@@ -750,7 +755,13 @@ static char ** create_client_auth(struct passwd *pw,char **env)
 	if(xauth_write_file(authfile,s->display,s->mcookie)==-1)
 	{
 		g_free(authfile);
-		authfile = g_strdup_printf("/var/run/lxdm/.Xauth%d",pw->pw_uid);
+
+		gchar *authdir = g_strdup_printf("/var/run/lxdm/%d", pw->pw_uid);
+		g_mkdir_with_parents(authdir, S_IRWXU);
+		chown(authdir, pw->pw_uid, pw->pw_gid);
+
+		authfile = g_strdup_printf("%s/.Xauthority", authdir);
+		g_free(authdir);
 		remove(authfile);
 		xauth_write_file(authfile,s->display,s->mcookie);
 	}
@@ -956,6 +967,11 @@ static void on_xserver_stop(void *data,int pid, int status)
 		s->dpy=NULL;
 		ui_drop();
 		lxdm_startx(s);
+		#ifndef DISABLE_XAUTH
+		char temp[256];
+		sprintf(temp,"/var/run/lxdm/lxdm-:%d.auth",s->display);
+		setenv("XAUTHORITY",temp,1);
+		#endif
 		ui_prepare();
 		lxsession_set_active(s);
 	}