diff --git a/calendar/gui/ea-calendar-helpers.c b/calendar/gui/ea-calendar-helpers.c
index fec0849..a60751d 100644
--- a/calendar/gui/ea-calendar-helpers.c
+++ b/calendar/gui/ea-calendar-helpers.c
@@ -89,6 +89,10 @@ ea_calendar_helpers_get_cal_view_from (GnomeCanvasItem *canvas_item)
 	/* parent of canvas_item->canvas is the EDayView or EWeekView widget */
 	canvas = canvas_item->canvas;
 	view_widget = gtk_widget_get_parent (GTK_WIDGET (canvas));
+
+	if (view_widget && GTK_IS_BOX (view_widget))
+		view_widget = gtk_widget_get_parent (view_widget);
+
 	if (!view_widget || !E_IS_CALENDAR_VIEW (view_widget))
 		return NULL;
 
diff --git a/e-util/e-table.c b/e-util/e-table.c
index 5780c23..8c78742 100644
--- a/e-util/e-table.c
+++ b/e-util/e-table.c
@@ -3507,8 +3507,7 @@ e_table_class_init (ETableClass *class)
 	g_object_class_override_property (
 		object_class, PROP_VSCROLL_POLICY, "vscroll-policy");
 
-	gtk_widget_class_set_accessible_type (widget_class,
-		GAL_A11Y_TYPE_E_TABLE);
+	gal_a11y_e_table_init_a11y_factory ();
 }
 
 void
diff --git a/e-util/e-tree.c b/e-util/e-tree.c
index ce50221..defc38d 100644
--- a/e-util/e-tree.c
+++ b/e-util/e-tree.c
@@ -3170,8 +3170,7 @@ e_tree_class_init (ETreeClass *class)
 	g_object_class_override_property (
 		object_class, PROP_VSCROLL_POLICY, "vscroll-policy");
 
-	gtk_widget_class_set_accessible_type (widget_class,
-		GAL_A11Y_TYPE_E_TREE);
+	gal_a11y_e_tree_init_a11y_factory ();
 }
 
 static void
diff --git a/e-util/gal-a11y-e-table-item.c b/e-util/gal-a11y-e-table-item.c
index a650d68..6990d4d 100644
--- a/e-util/gal-a11y-e-table-item.c
+++ b/e-util/gal-a11y-e-table-item.c
@@ -1115,7 +1115,7 @@ gal_a11y_e_table_item_new (ETableItem *item)
 	AtkObject *parent;
 	const gchar *name;
 
-	g_return_val_if_fail (item && item->cols >= 0 && item->rows >= 0, NULL);
+	g_return_val_if_fail (item && item->cols >= 0, NULL);
 	a11y = g_object_new (gal_a11y_e_table_item_get_type (), NULL);
 
 	atk_object_initialize (ATK_OBJECT (a11y), item);
@@ -1133,7 +1133,7 @@ gal_a11y_e_table_item_new (ETableItem *item)
 	GET_PRIVATE (a11y)->item = item;
 	/* Initialize cell data. */
 	GET_PRIVATE (a11y)->cols = item->cols;
-	GET_PRIVATE (a11y)->rows = item->rows;
+	GET_PRIVATE (a11y)->rows = item->rows >= 0 ? item->rows : 0;
 
 	GET_PRIVATE (a11y)->columns = e_table_header_get_columns (item->header);
 	if (GET_PRIVATE (a11y)->columns == NULL)
diff --git a/e-util/gal-a11y-e-table.c b/e-util/gal-a11y-e-table.c
index 26bcc03..a65414a 100644
--- a/e-util/gal-a11y-e-table.c
+++ b/e-util/gal-a11y-e-table.c
@@ -249,3 +249,14 @@ gal_a11y_e_table_new (GObject *widget)
 
 	return ATK_OBJECT (a11y);
 }
+
+void
+gal_a11y_e_table_init_a11y_factory (void)
+{
+	if (atk_get_root ())
+		atk_registry_set_factory_type (
+			atk_get_default_registry (),
+						E_TYPE_TABLE,
+						gal_a11y_e_table_factory_get_type ());
+
+}
diff --git a/e-util/gal-a11y-e-table.h b/e-util/gal-a11y-e-table.h
index 9d16cd2..a7d1391 100644
--- a/e-util/gal-a11y-e-table.h
+++ b/e-util/gal-a11y-e-table.h
@@ -55,4 +55,6 @@ struct _GalA11yETableClass {
 GType      gal_a11y_e_table_get_type  (void);
 AtkObject *gal_a11y_e_table_new       (GObject *table);
 
+void		gal_a11y_e_table_init_a11y_factory (void);
+
 #endif /* __GAL_A11Y_E_TABLE_H__ */
diff --git a/e-util/gal-a11y-e-tree.c b/e-util/gal-a11y-e-tree.c
index fb0a224..41b0d92 100644
--- a/e-util/gal-a11y-e-tree.c
+++ b/e-util/gal-a11y-e-tree.c
@@ -131,3 +131,12 @@ gal_a11y_e_tree_new (GObject *widget)
 	return ATK_OBJECT (a11y);
 }
 
+void
+gal_a11y_e_tree_init_a11y_factory (void)
+{
+	if (atk_get_root ())
+		atk_registry_set_factory_type (
+			atk_get_default_registry (),
+			E_TYPE_TREE,
+			gal_a11y_e_tree_factory_get_type ());
+}
diff --git a/e-util/gal-a11y-e-tree.h b/e-util/gal-a11y-e-tree.h
index b656fd7..af19177 100644
--- a/e-util/gal-a11y-e-tree.h
+++ b/e-util/gal-a11y-e-tree.h
@@ -54,4 +54,6 @@ struct _GalA11yETreeClass {
 GType      gal_a11y_e_tree_get_type  (void);
 AtkObject *gal_a11y_e_tree_new       (GObject *tree);
 
+void		gal_a11y_e_tree_init_a11y_factory (void);
+
 #endif /* __GAL_A11Y_E_TREE_H__ */
diff --git a/libgnomecanvas/gnome-canvas.c b/libgnomecanvas/gnome-canvas.c
index 4d482c5..6d5e926 100644
--- a/libgnomecanvas/gnome-canvas.c
+++ b/libgnomecanvas/gnome-canvas.c
@@ -1911,7 +1911,6 @@ gnome_canvas_class_init (GnomeCanvasClass *class)
 		G_TYPE_INT,
 		G_TYPE_INT);
 
-	gtk_widget_class_set_accessible_type (widget_class, GAIL_TYPE_CANVAS);
 	gail_canvas_a11y_init ();
 }
 
