diff -rup gtkfilechooserdialog.save.c gtkfilechooserdialog.c
--- gtkfilechooserdialog.save.c	2008-10-16 21:06:20 -0700
+++ gtkfilechooserdialog.c	2008-11-19 23:29:56 -0800
@@ -257,6 +257,8 @@ gtk_file_chooser_dialog_constructor (GTy
 {
   GtkFileChooserDialogPrivate *priv;
   GObject *object;
+  gint width, height;
+  gint default_width, default_height;
 
   object = G_OBJECT_CLASS (gtk_file_chooser_dialog_parent_class)->constructor (type,
 									       n_construct_properties,
@@ -287,6 +289,15 @@ gtk_file_chooser_dialog_constructor (GTy
   _gtk_file_chooser_set_delegate (GTK_FILE_CHOOSER (object),
 				  GTK_FILE_CHOOSER (priv->widget));
 
+  /* We need to pre-set the window size here to ensure that centering works properly
+   * with GTK_WIN_POS_CENTER or GTK_WIN_POS_CENTER_ON_PARENT */
+  _gtk_file_chooser_embed_get_default_size (GTK_FILE_CHOOSER_EMBED (priv->widget),
+                            &default_width, &default_height);
+  width = default_width + width + (2 * GTK_CONTAINER (object)->border_width);
+  height = default_height + height + (2 * GTK_CONTAINER (object)->border_width);
+
+  gtk_window_resize (GTK_WINDOW (object), width, height);
+
   gtk_widget_pop_composite_child ();
 
   return object;
