diff --git a/gtk/gtkrevealer.c b/gtk/gtkrevealer.c
index cd9c7a2..9039abf 100644
--- a/gtk/gtkrevealer.c
+++ b/gtk/gtkrevealer.c
@@ -291,36 +291,6 @@ effective_transition (GtkRevealer *revealer)
 }
 
 static void
-gtk_revealer_get_child_allocation (GtkRevealer   *revealer,
-                                   GtkAllocation *allocation,
-                                   GtkAllocation *child_allocation)
-{
-  GtkWidget *child;
-  GtkRevealerTransitionType transition;
-
-  g_return_if_fail (revealer != NULL);
-  g_return_if_fail (allocation != NULL);
-
-  child_allocation->x = 0;
-  child_allocation->y = 0;
-  child_allocation->width = allocation->width;
-  child_allocation->height = allocation->height;
-
-  child = gtk_bin_get_child (GTK_BIN (revealer));
-  if (child != NULL && gtk_widget_get_visible (child))
-    {
-      transition = effective_transition (revealer);
-      if (transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT ||
-          transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT)
-        gtk_widget_get_preferred_width_for_height (child, child_allocation->height, NULL,
-                                                   &child_allocation->width);
-      else
-        gtk_widget_get_preferred_height_for_width (child, child_allocation->width, NULL,
-                                                   &child_allocation->height);
-    }
-}
-
-static void
 gtk_revealer_real_realize (GtkWidget *widget)
 {
   GtkRevealer *revealer = GTK_REVEALER (widget);
@@ -328,10 +298,8 @@ gtk_revealer_real_realize (GtkWidget *widget)
   GtkAllocation allocation;
   GdkWindowAttr attributes = { 0 };
   GdkWindowAttributesType attributes_mask;
-  GtkAllocation child_allocation;
   GtkWidget *child;
   GtkStyleContext *context;
-  GtkRevealerTransitionType transition;
 
   gtk_widget_set_realized (widget, TRUE);
 
@@ -354,18 +322,10 @@ gtk_revealer_real_realize (GtkWidget *widget)
   gtk_widget_set_window (widget, priv->view_window);
   gtk_widget_register_window (widget, priv->view_window);
 
-  gtk_revealer_get_child_allocation (revealer, &allocation, &child_allocation);
-
   attributes.x = 0;
   attributes.y = 0;
-  attributes.width = child_allocation.width;
-  attributes.height = child_allocation.height;
-
-  transition = effective_transition (revealer);
-  if (transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN)
-    attributes.y = allocation.height - child_allocation.height;
-  else if (transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT)
-    attributes.x = allocation.width - child_allocation.width;
+  attributes.width = allocation.width;
+  attributes.height = allocation.height;
 
   priv->bin_window =
     gdk_window_new (priv->view_window, &attributes, attributes_mask);
@@ -432,20 +392,16 @@ gtk_revealer_real_size_allocate (GtkWidget     *widget,
 {
   GtkRevealer *revealer = GTK_REVEALER (widget);
   GtkRevealerPrivate *priv = gtk_revealer_get_instance_private (revealer);
-  GtkAllocation child_allocation;
   GtkWidget *child;
   gboolean window_visible;
-  int bin_x, bin_y;
-  GtkRevealerTransitionType transition;
 
   g_return_if_fail (allocation != NULL);
 
   gtk_widget_set_allocation (widget, allocation);
-  gtk_revealer_get_child_allocation (revealer, allocation, &child_allocation);
 
   child = gtk_bin_get_child (GTK_BIN (revealer));
   if (child != NULL && gtk_widget_get_visible (child))
-    gtk_widget_size_allocate (child, &child_allocation);
+    gtk_widget_size_allocate (child, allocation);
 
   if (gtk_widget_get_realized (widget))
     {
@@ -464,17 +420,9 @@ gtk_revealer_real_size_allocate (GtkWidget     *widget,
                               allocation->x, allocation->y,
                               allocation->width, allocation->height);
 
-      bin_x = 0;
-      bin_y = 0;
-      transition = effective_transition (revealer);
-      if (transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN)
-        bin_y = allocation->height - child_allocation.height;
-      else if (transition == GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT)
-        bin_x = allocation->width - child_allocation.width;
-
       gdk_window_move_resize (priv->bin_window,
-                              bin_x, bin_y,
-                              child_allocation.width, child_allocation.height);
+                              0, 0,
+                              allocation->width, allocation->height);
     }
 }
 
