diff --git a/doc/gnome-screensaver.html b/doc/gnome-screensaver.html
deleted file mode 100644
index 5fdff50..0000000
--- a/doc/gnome-screensaver.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>GNOME Screensaver 2.15.3 Documentation</title><link rel="stylesheet" href="docbook.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="index"></a>GNOME Screensaver 2.15.3 Documentation</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">William Jon</span> <span class="surname">McCann</span></h3><div class="affiliation"><div class="address"><p><br>
-            <code class="email">&lt;<a href="mailto:mccann@jhu.edu">mccann@jhu.edu</a>&gt;</code><br>
-          </p></div></div></div></div></div><div><p class="releaseinfo">Version 2.15.3</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="#dbus-interface">1. DBUS Interface</a></span></dt><dd><dl><dt><span class="sect1"><a href="#gs-intro">Introduction</a></span></dt><dt><span class="sect1"><a href="#gs-methods">Methods</a></span></dt><dd><dl><dt><span class="sect2"><a href="#gs-method-Lock">
-        <code class="literal">Lock</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Cycle">
-        <code class="literal">Cycle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SimulateUserActivity">
-        <code class="literal">SimulateUserActivity</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Inhibit">
-        <code class="literal">Inhibit</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnInhibit">
-        <code class="literal">UnInhibit</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Throttle">
-        <code class="literal">Throttle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnThrottle">
-        <code class="literal">UnThrottle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SetActive">
-        <code class="literal">SetActive</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActive">
-        <code class="literal">GetActive</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActiveTime">
-        <code class="literal">GetActiveTime</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetSessionIdle">
-        <code class="literal">GetSessionIdle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetSessionIdleTime">
-        <code class="literal">GetSessionIdleTime</code>
-      </a></span></dt></dl></dd><dt><span class="sect1"><a href="#gs-signals">Signals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#gs-signal-ActiveChanged">
-        <code class="literal">ActiveChanged</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-SessionIdleChanged">
-        <code class="literal">SessionIdleChanged</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-AuthenticationRequestBegin">
-        <code class="literal">AuthenticationRequestBegin</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-AuthenticationRequestEnd">
-        <code class="literal">AuthenticationRequestEnd</code>
-      </a></span></dt></dl></dd><dt><span class="sect1"><a href="#gs-examples">Examples</a></span></dt></dl></dd></dl></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="dbus-interface"></a>Chapter 1. DBUS Interface</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#gs-intro">Introduction</a></span></dt><dt><span class="sect1"><a href="#gs-methods">Methods</a></span></dt><dd><dl><dt><span class="sect2"><a href="#gs-method-Lock">
-        <code class="literal">Lock</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Cycle">
-        <code class="literal">Cycle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SimulateUserActivity">
-        <code class="literal">SimulateUserActivity</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Inhibit">
-        <code class="literal">Inhibit</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnInhibit">
-        <code class="literal">UnInhibit</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Throttle">
-        <code class="literal">Throttle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnThrottle">
-        <code class="literal">UnThrottle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SetActive">
-        <code class="literal">SetActive</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActive">
-        <code class="literal">GetActive</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActiveTime">
-        <code class="literal">GetActiveTime</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetSessionIdle">
-        <code class="literal">GetSessionIdle</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetSessionIdleTime">
-        <code class="literal">GetSessionIdleTime</code>
-      </a></span></dt></dl></dd><dt><span class="sect1"><a href="#gs-signals">Signals</a></span></dt><dd><dl><dt><span class="sect2"><a href="#gs-signal-ActiveChanged">
-        <code class="literal">ActiveChanged</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-SessionIdleChanged">
-        <code class="literal">SessionIdleChanged</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-AuthenticationRequestBegin">
-        <code class="literal">AuthenticationRequestBegin</code>
-      </a></span></dt><dt><span class="sect2"><a href="#gs-signal-AuthenticationRequestEnd">
-        <code class="literal">AuthenticationRequestEnd</code>
-      </a></span></dt></dl></dd><dt><span class="sect1"><a href="#gs-examples">Examples</a></span></dt></dl></div><p>
-    This API is currently unstable and is likely to change in the future.
-  </p><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="gs-intro"></a>Introduction</h2></div></div></div><p>
-      GNOME Screensaver exposes a DBUS API for programs to obtain information about
-      the screensaver state and to interact with the screensaver in limited ways.
-    </p><p>
-      The following constants are used to uniquely refer to the GnomeScreensaver
-      object when making DBUS method calls:
-    </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><tbody><tr><td>DBUS Service:</td><td><code class="literal">org.gnome.ScreenSaver</code></td></tr><tr><td>DBUS Object Path:</td><td><code class="literal">/org/gnome/ScreenSaver</code></td></tr><tr><td>DBUS Interface:</td><td><code class="literal">org.gnome.ScreenSaver</code></td></tr></tbody></table></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="gs-methods"></a>Methods</h2></div></div></div><p>
-      These are the DBUS methods.
-    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Lock"></a>
-        <code class="literal">Lock</code>
-      </h3></div></div></div><p>
-        Request that the screen be locked.  This bypasses all Inhibit requests.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Cycle"></a>
-        <code class="literal">Cycle</code>
-      </h3></div></div></div><p>
-        Request that the screen saver theme be restarted and, if applicable,
-        switch to the next one in the list.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-SimulateUserActivity"></a>
-        <code class="literal">SimulateUserActivity</code>
-      </h3></div></div></div><p>
-        Simulate user activity.  If the screensaver is activated this
-        will attempt to deactivate and authentication will be
-        requested if necessary.  If the screensaver is not activated
-        then the idle timers will be reset.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Inhibit"></a>
-        <code class="literal">Inhibit</code>
-      </h3></div></div></div><p>
-        Request that saving the screen due to system idleness be blocked until
-        UnInhibit is called or the calling process exits.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>string</td><td>the application name, e.g. "totem"</td></tr><tr><td>in</td><td>string</td><td>the localized reason to inhibit, e.g. "playing movie"</td></tr><tr><td>out</td><td>unsigned integer</td><td>the cookie</td></tr></tbody></table></div><p>
-        A cookie is a random, unique, non-zero UINT32 used to identify the inhibit request.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-UnInhibit"></a>
-        <code class="literal">UnInhibit</code>
-      </h3></div></div></div><p>
-        Cancel a previous call to Inhibit() identified by the cookie.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>unsigned integer</td><td>the cookie</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-Throttle"></a>
-        <code class="literal">Throttle</code>
-      </h3></div></div></div><p>
-        Request that running themes while the screensaver is active be blocked
-        until UnThrottle is called or the calling process exits.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>string</td><td>the application name, e.g. "gnome-power-manager"</td></tr><tr><td>in</td><td>string</td><td>the localized reason to inhibit, e.g. "on battery power"</td></tr><tr><td>out</td><td>unsigned integer</td><td>the cookie</td></tr></tbody></table></div><p>
-        A cookie is a random, unique, non-zero UINT32 used to identify the throttle request.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-UnThrottle"></a>
-        <code class="literal">UnThrottle</code>
-      </h3></div></div></div><p>
-        Cancel a previous call to Throttle() identified by the cookie.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>unsigned integer</td><td>the cookie</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-SetActive"></a>
-        <code class="literal">SetActive</code>
-      </h3></div></div></div><p>
-        Request a change in the state of the screensaver.
-        Set to TRUE to request that the screensaver activate.
-        Active means that the screensaver has blanked the screen and may run a
-        graphical theme.  This does not necessary mean that the screen is locked.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>boolean</td><td>TRUE to request activation, FALSE to request deactivation</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-GetActive"></a>
-        <code class="literal">GetActive</code>
-      </h3></div></div></div><p>
-        Returns the value of the current state of activity. See SetActive().
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Activation state</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-GetActiveTime"></a>
-        <code class="literal">GetActiveTime</code>
-      </h3></div></div></div><p>
-        Returns the number of seconds that the screensaver has been active.
-        Returns zero if the screensaver is not active.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>unsigned integer</td><td>Active time in seconds</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-GetSessionIdle"></a>
-        <code class="literal">GetSessionIdle</code>
-      </h3></div></div></div><p>
-        Returns the value of the current state of session idleness.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>If the session is idle</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-method-GetSessionIdleTime"></a>
-        <code class="literal">GetSessionIdleTime</code>
-      </h3></div></div></div><p>
-        Returns the number of seconds that the session has been idle.
-        Returns zero if the session is not idle.
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>unsigned integer</td><td>Idle time in seconds</td></tr></tbody></table></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="gs-signals"></a>Signals</h2></div></div></div><p>
-      These are the DBUS signals.
-    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-signal-ActiveChanged"></a>
-        <code class="literal">ActiveChanged</code>
-      </h3></div></div></div><p>
-        See method GetActive().
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Returns the value of the current state of activity.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-signal-SessionIdleChanged"></a>
-        <code class="literal">SessionIdleChanged</code>
-      </h3></div></div></div><p>
-        See method GetActive().
-      </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Returns the value of the current state of activity.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-signal-AuthenticationRequestBegin"></a>
-        <code class="literal">AuthenticationRequestBegin</code>
-      </h3></div></div></div><p>
-        Emitted before an authentication request
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="gs-signal-AuthenticationRequestEnd"></a>
-        <code class="literal">AuthenticationRequestEnd</code>
-      </h3></div></div></div><p>
-        Emitted after an authentication request
-      </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="gs-examples"></a>Examples</h2></div></div></div><p>
-      You can get the number of seconds the screensaver has been active by
-      running the following:
-    </p><pre class="screen">
-dbus-send --session \
-          --dest=org.gnome.ScreenSaver \
-          --type=method_call \
-          --print-reply \
-          --reply-timeout=20000 \
-          /org/gnome/ScreenSaver \
-          org.gnome.ScreenSaver.GetSessionIdleTime
-    </pre><p>
-      You can activate the screensaver like so:
-    </p><pre class="screen">
-dbus-send --session \
-          --dest=org.gnome.ScreenSaver \
-          --type=method_call \
-          --print-reply \
-          --reply-timeout=20000 \
-          /org/gnome/ScreenSaver \
-          org.gnome.ScreenSaver.SetActive \
-          boolean:true
-    </pre><p>
-      You can monitor screensaver changes:
-    </p><pre class="screen">
-dbus-monitor --session \
-          "type='signal',interface='org.gnome.ScreenSaver'"
-    </pre><p>
-      Or watch for a specific screensaver signal:
-    </p><pre class="screen">
-dbus-monitor --session \
-          "type='signal',interface='org.gnome.ScreenSaver',member='SessionIdleChanged'"
-    </pre></div></div></div></body></html>
diff --git a/src/gs-lock-plug.c b/src/gs-lock-plug.c
index 21033da..0f9a053 100644
--- a/src/gs-lock-plug.c
+++ b/src/gs-lock-plug.c
@@ -871,25 +871,29 @@ forward_key_events (GSLockPlug *plug)
 }
 
 static void
-gs_lock_plug_size_request (GtkWidget      *widget,
-                           GtkRequisition *requisition)
+gs_lock_plug_get_preferred_height_for_width (GtkWidget *widget,
+                                             gint       width,
+                                             gint      *minimum,
+                                             gint      *natural)
 {
-        int mod_width;
-        int mod_height;
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->get_preferred_height_for_width (widget, width, minimum, natural);
 
-        if (GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request) {
-                GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->size_request (widget, requisition);
-        }
+        /* if the dialog is wide fill out the height */
+        *minimum = MAX (*minimum, width / 1.6);
+        *natural = MAX (*natural, width / 1.6);
+}
 
-        mod_width = requisition->height * 1.3;
-        mod_height = requisition->width / 1.6;
-        if (requisition->width < mod_width) {
-                /* if the dialog is tall fill out the width */
-                requisition->width = mod_width;
-        } else if (requisition->height < mod_height) {
-                /* if the dialog is wide fill out the height */
-                requisition->height = mod_height;
-        }
+static void
+gs_lock_plug_get_preferred_width_for_height (GtkWidget *widget,
+                                             gint       height,
+                                             gint      *minimum,
+                                             gint      *natural)
+{
+        GTK_WIDGET_CLASS (gs_lock_plug_parent_class)->get_preferred_width_for_height (widget, height, minimum, natural);
+
+        /* if the dialog is tall fill out the width */
+        *minimum = MAX (*minimum, height * 1.3);
+        *natural = MAX (*natural, height * 1.3);
 }
 
 static void
@@ -1083,7 +1087,8 @@ gs_lock_plug_class_init (GSLockPlugClass *klass)
         widget_class->style_set    = gs_lock_plug_style_set;
         widget_class->show         = gs_lock_plug_show;
         widget_class->hide         = gs_lock_plug_hide;
-        widget_class->size_request = gs_lock_plug_size_request;
+        widget_class->get_preferred_width_for_height = gs_lock_plug_get_preferred_width_for_height;
+        widget_class->get_preferred_height_for_width = gs_lock_plug_get_preferred_height_for_width;
 
         klass->close = gs_lock_plug_close;
 
diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
index 91d68e3..88d9ba6 100644
--- a/src/gs-window-x11.c
+++ b/src/gs-window-x11.c
@@ -2086,6 +2086,30 @@ gs_window_real_size_request (GtkWidget      *widget,
         gs_window_move_resize_window (window, position_changed, size_changed);
 }
 
+static void
+gs_window_real_get_preferred_width (GtkWidget *widget,
+                                    gint      *minimum,
+                                    gint      *natural)
+{
+  GtkRequisition requisition;
+
+  gs_window_real_size_request (widget, &requisition);
+
+  *minimum = *natural = requisition.width;
+}
+
+static void
+gs_window_real_get_preferred_height (GtkWidget *widget,
+                                     gint      *minimum,
+                                     gint      *natural)
+{
+  GtkRequisition requisition;
+
+  gs_window_real_size_request (widget, &requisition);
+
+  *minimum = *natural = requisition.height;
+}
+
 static gboolean
 gs_window_real_grab_broken (GtkWidget          *widget,
                             GdkEventGrabBroken *event)
@@ -2170,7 +2194,8 @@ gs_window_class_init (GSWindowClass *klass)
         widget_class->motion_notify_event = gs_window_real_motion_notify_event;
         widget_class->button_press_event  = gs_window_real_button_press_event;
         widget_class->scroll_event        = gs_window_real_scroll_event;
-        widget_class->size_request        = gs_window_real_size_request;
+        widget_class->get_preferred_width = gs_window_real_get_preferred_width;
+        widget_class->get_preferred_height= gs_window_real_get_preferred_height;
         widget_class->grab_broken_event   = gs_window_real_grab_broken;
         widget_class->visibility_notify_event = gs_window_real_visibility_notify_event;
 
