32bbf482e3229cc942f4208e19171222f178ac04
diff --git a/shell/ev-transition-animation.c b/shell/ev-transition-animation.c
index a49938d..5673d11 100644
--- a/shell/ev-transition-animation.c
+++ b/shell/ev-transition-animation.c
@@ -361,6 +361,50 @@ ev_transition_animation_blinds (cairo_t               *cr,
 	}
 }
 
+static void
+ev_transition_animation_box (cairo_t               *cr,
+			     EvTransitionAnimation *animation,
+			     EvTransitionEffect    *effect,
+			     gdouble                progress,
+			     GdkRectangle           page_area)
+{
+	EvTransitionAnimationPriv *priv;
+	EvTransitionEffectDirection direction;
+	gint width, height;
+
+	priv = EV_TRANSITION_ANIMATION_GET_PRIVATE (animation);
+	width = page_area.width;
+	height = page_area.height;
+
+	g_object_get (effect,
+		      "direction", &direction,
+		      NULL);
+
+	if (direction == EV_TRANSITION_DIRECTION_INWARD) {
+		paint_surface (cr, priv->dest_surface, 0, 0, 0, page_area);
+
+		cairo_rectangle (cr,
+				 width * progress / 2,
+				 height * progress / 2,
+				 width * (1 - progress),
+				 height * (1 - progress));
+		cairo_clip (cr);
+
+		paint_surface (cr, priv->origin_surface, 0, 0, 0, page_area);
+	} else {
+		paint_surface (cr, priv->origin_surface, 0, 0, 0, page_area);
+
+		cairo_rectangle (cr,
+				 (width / 2) - (width * progress / 2),
+				 (height / 2) - (height * progress / 2),
+				 width * progress,
+				 height * progress);
+		cairo_clip (cr);
+
+		paint_surface (cr, priv->dest_surface, 0, 0, 0, page_area);
+	}
+}
+
 void
 ev_transition_animation_paint (EvTransitionAnimation *animation,
 			       cairo_t               *cr,
@@ -393,6 +437,9 @@ ev_transition_animation_paint (EvTransitionAnimation *animation,
 	case EV_TRANSITION_EFFECT_BLINDS:
 		ev_transition_animation_blinds (cr, animation, priv->effect, progress, page_area);
 		break;
+	case EV_TRANSITION_EFFECT_BOX:
+		ev_transition_animation_box (cr, animation, priv->effect, progress, page_area);
+		break;
 	default:
 		g_warning ("Transition animation not implemented");
 	}
