diff --git a/libview/ev-annotation-window.c b/libview/ev-annotation-window.c
index 9d66ec9..3c14e36 100644
--- a/libview/ev-annotation-window.c
+++ b/libview/ev-annotation-window.c
@@ -296,6 +296,21 @@ ev_annotation_window_button_press_event (GtkWidget      *widget,
 	return FALSE;
 }
 
+static gboolean
+ev_annotation_window_key_press_event (GtkWidget      *widget,
+					 GdkEventKey *event)
+{
+	EvAnnotationWindow *window = EV_ANNOTATION_WINDOW (widget);
+
+	if (event->type == GDK_KEY_PRESS && event->keyval == GDK_KEY_Escape) {
+        ev_annotation_window_close (window);
+		return TRUE;
+	}
+
+	return FALSE;
+}
+
+
 static void
 ev_annotation_window_init (EvAnnotationWindow *window)
 {
@@ -332,6 +347,11 @@ ev_annotation_window_init (EvAnnotationWindow *window)
 	gtk_box_pack_start (GTK_BOX (hbox), header, TRUE, TRUE, 0);
 	gtk_widget_show (header);
 
+	gtk_widget_add_events (GTK_WIDGET (window), GDK_KEY_PRESS_MASK);
+	g_signal_connect_swapped (window, "key-press-event",
+				  G_CALLBACK (ev_annotation_window_key_press_event),
+			          window);
+
 	window->close_button = gtk_button_new ();
 	gtk_button_set_relief (GTK_BUTTON (window->close_button), GTK_RELIEF_NONE);
 	gtk_container_set_border_width (GTK_CONTAINER (window->close_button), 0);
