--- gdm-2.15.6/gui/gdmwm.c
+++ gdm-2.15.6/gui/gdmwm.c
@@ -250,7 +250,13 @@ gdm_wm_center_window (GtkWindow *cw) 
  	gtk_window_move (GTK_WINDOW (cw), x, y);	
 }
 
-
+void
+gdm_wm_center_cursor (void)
+{
+    XWarpPointer (wm_disp, None, wm_root, 0, 0, 0, 0, 
+		  gdm_wm_screen.x + gdm_wm_screen.width / 2,
+		  gdm_wm_screen.y + gdm_wm_screen.height / 2);
+}
 
 static void
 trap_push (void)
--- gdm-2.15.6/gui/gdmwm.h
+++ gdm-2.15.6/gui/gdmwm.h
@@ -64,6 +64,10 @@ void	gdm_wm_set_screen		(int cur_screen_
  */
 void	gdm_wm_center_window		(GtkWindow *cw);
 
+/* Center mouse pointer
+ */
+void gdm_wm_center_cursor (void);
+
 /*
  * Save and restore stacking order, useful for restarting
  * the greeter
--- gdm-2.15.6/gui/greeter/greeter.c
+++ gdm-2.15.6/gui/greeter/greeter.c
@@ -1432,6 +1432,7 @@ main (int argc, char *argv[])
      gdm_config_get_string (GDM_KEY_INFO_MSG_FONT));
 
   gdm_common_setup_cursor (GDK_LEFT_PTR);
+  gdm_wm_center_cursor ();
   gdm_common_pre_fetch_launch ();
   gtk_main ();
 
