Index: src/goocanvasrect.c
===================================================================
--- src/goocanvasrect.c	(revision 39)
+++ src/goocanvasrect.c	(working copy)
@@ -55,35 +55,10 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasRect, 
 static void
 goo_canvas_rect_install_common_properties (GObjectClass *gobject_class)
 {
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the rectangle"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the rectangle"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the rectangle"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the rectangle"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
 
   g_object_class_install_property (gobject_class, PROP_RADIUS_X,
 				   g_param_spec_double ("radius_x",
@@ -257,9 +232,11 @@ goo_canvas_rect_set_common_property (GOb
       break;
     case PROP_WIDTH:
       rect_data->width = g_value_get_double (value);
+      if(rect_data->width < 0) rect_data->width = 100; /* Default */
       break;
     case PROP_HEIGHT:
       rect_data->height = g_value_get_double (value);
+      if(rect_data->height < 0) rect_data->height = 100; /* Default */
       break;
     case PROP_RADIUS_X:
       rect_data->radius_x = g_value_get_double (value);
Index: src/goocanvasellipse.c
===================================================================
--- src/goocanvasellipse.c	(revision 39)
+++ src/goocanvasellipse.c	(working copy)
@@ -72,6 +72,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasEllips
 static void
 goo_canvas_ellipse_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   g_object_class_install_property (gobject_class, PROP_CENTER_X,
 				   g_param_spec_double ("center-x",
 							_("Center X"),
@@ -101,36 +106,6 @@ goo_canvas_ellipse_install_common_proper
 							_("The vertical radius of the ellipse"),
 							0.0, G_MAXDOUBLE, 0.0,
 							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the left side of the ellipse"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the top of the ellipse"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the ellipse"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the ellipse"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
 }
 
 
@@ -303,6 +278,7 @@ goo_canvas_ellipse_set_common_property (
 					GParamSpec           *pspec)
 {
   gdouble x, y;
+  gdouble width, height;
 
   switch (prop_id)
     {
@@ -331,10 +307,13 @@ goo_canvas_ellipse_set_common_property (
       g_object_notify (object, "center-y");
       break;
     case PROP_WIDTH:
+      width = g_value_get_double (value);
+      if(width < 0) width = 100.0; /* Default */
+
       /* Calculate the current x coordinate. */
       x = ellipse_data->center_x - ellipse_data->radius_x;
       /* Calculate the new radius_x, which is half the width. */
-      ellipse_data->radius_x = g_value_get_double (value) / 2.0;
+      ellipse_data->radius_x = width / 2.0;
       /* Now calculate the new center_x. */
       ellipse_data->center_x = x + ellipse_data->radius_x;
 
@@ -342,10 +321,13 @@ goo_canvas_ellipse_set_common_property (
       g_object_notify (object, "radius-x");
       break;
     case PROP_HEIGHT:
+      height = g_value_get_double (value);
+      if(height < 0) height = 100.0; /* Default */
+
       /* Calculate the current y coordinate. */
       y = ellipse_data->center_y - ellipse_data->radius_y;
       /* Calculate the new radius_y, which is half the height. */
-      ellipse_data->radius_y = g_value_get_double (value) / 2.0;
+      ellipse_data->radius_y = height / 2.0;
       /* Now calculate the new center_y. */
       ellipse_data->center_y = y + ellipse_data->radius_y;
 
Index: src/goocanvasimage.c
===================================================================
--- src/goocanvasimage.c	(revision 39)
+++ src/goocanvasimage.c	(working copy)
@@ -67,6 +67,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasImage,
 static void
 goo_canvas_image_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   g_object_class_install_property (gobject_class, PROP_PATTERN,
                                    g_param_spec_boxed ("pattern",
 						       _("Pattern"),
@@ -74,36 +79,6 @@ goo_canvas_image_install_common_properti
 						       GOO_TYPE_CAIRO_PATTERN,
 						       G_PARAM_READWRITE));
 
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the image"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the image"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the image"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the image"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
   g_object_class_install_property (gobject_class, PROP_PIXBUF,
 				   g_param_spec_object ("pixbuf",
 							_("Pixbuf"),
@@ -272,6 +247,7 @@ goo_canvas_image_set_common_property (GO
 				      GParamSpec           *pspec)
 {
   GdkPixbuf *pixbuf;
+  cairo_surface_t* surface;
 
   switch (prop_id)
     {
@@ -288,9 +264,34 @@ goo_canvas_image_set_common_property (GO
       break;
     case PROP_WIDTH:
       image_data->width = g_value_get_double (value);
+      if(image_data->width < 0)
+        {
+          if(cairo_pattern_get_surface(image_data->pattern, &surface) == CAIRO_STATUS_SUCCESS
+             && cairo_surface_get_type(surface) == CAIRO_SURFACE_TYPE_IMAGE)
+            {
+               image_data->width = cairo_image_surface_get_width(surface);
+            }
+          else
+            {
+              image_data->width = 100; /* Default */
+            }
+        }
       break;
     case PROP_HEIGHT:
       image_data->height = g_value_get_double (value);
+      if(image_data->height < 0)
+        {
+          if(cairo_pattern_get_surface(image_data->pattern, &surface) == CAIRO_STATUS_SUCCESS
+             && cairo_surface_get_type(surface) == CAIRO_SURFACE_TYPE_IMAGE)
+            {
+               image_data->height = cairo_image_surface_get_height(surface);
+            }
+          else
+            {
+              image_data->height = 100; /* Default */
+            }
+        }
+
       break;
     case PROP_PIXBUF:
       cairo_pattern_destroy (image_data->pattern);
Index: src/goocanvasgrid.c
===================================================================
--- src/goocanvasgrid.c	(revision 39)
+++ src/goocanvasgrid.c	(working copy)
@@ -79,35 +79,10 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasGrid, 
 static void
 goo_canvas_grid_install_common_properties (GObjectClass *gobject_class)
 {
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the grid"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the grid"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the grid"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the grid"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
 
   g_object_class_install_property (gobject_class, PROP_X_STEP,
 				   g_param_spec_double ("x-step",
@@ -520,9 +495,11 @@ goo_canvas_grid_set_common_property (GOb
       break;
     case PROP_WIDTH:
       grid_data->width = g_value_get_double (value);
+      if(grid_data->width < 0) grid_data->width = 100.0; /* Default */
       break;
     case PROP_HEIGHT:
       grid_data->height = g_value_get_double (value);
+      if(grid_data->height < 0) grid_data->height = 100.0; /* Default */
       break;
     case PROP_X_STEP:
       grid_data->x_step = g_value_get_double (value);
Index: src/goocanvaspolyline.c
===================================================================
--- src/goocanvaspolyline.c	(revision 39)
+++ src/goocanvaspolyline.c	(working copy)
@@ -137,6 +137,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasPolyli
 static void
 goo_canvas_polyline_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   g_object_class_install_property (gobject_class, PROP_POINTS,
 				   g_param_spec_boxed ("points",
 						       _("Points"),
@@ -185,36 +190,6 @@ goo_canvas_polyline_install_common_prope
 							_("The length of the arrow tip, as a multiple of the line width"),
 							0.0, G_MAXDOUBLE, 4.0,
 							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the left-most point of the polyline"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the top-most point of the polyline"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the polyline"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the polyline"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
 }
 
 
Index: src/goocanvasgroup.c
===================================================================
--- src/goocanvasgroup.c	(revision 39)
+++ src/goocanvasgroup.c	(working copy)
@@ -85,37 +85,10 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasGroup,
 static void
 goo_canvas_group_install_common_properties (GObjectClass *gobject_class)
 {
-  g_object_class_install_property (gobject_class, PROP_X,
-                                  g_param_spec_double ("x",
-                                                       "X",
-                                                       _("The x coordinate of the group"),
-                                                       -G_MAXDOUBLE,
-                                                       G_MAXDOUBLE, 0.0,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-                                  g_param_spec_double ("y",
-                                                       "Y",
-                                                       _("The y coordinate of the group"),
-                                                       -G_MAXDOUBLE,
-                                                       G_MAXDOUBLE, 0.0,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-                                  g_param_spec_double ("width",
-                                                       _("Width"),
-                                                       _("The width of the group, or -1 to use the default width"),
-                                                       -G_MAXDOUBLE,
-                                                       G_MAXDOUBLE, -1.0,
-                                                       G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-                                  g_param_spec_double ("height",
-                                                       _("Height"),
-                                                       _("The height of the group, or -1 to use the default height"),
-                                                       -G_MAXDOUBLE,
-                                                       G_MAXDOUBLE, -1.0,
-                                                       G_PARAM_READWRITE));
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
 }
 
 static void
Index: src/goocanvaspath.c
===================================================================
--- src/goocanvaspath.c	(revision 39)
+++ src/goocanvaspath.c	(working copy)
@@ -58,6 +58,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasPath, 
 static void
 goo_canvas_path_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   /**
    * GooCanvasPath:data
    *
@@ -71,36 +76,6 @@ goo_canvas_path_install_common_propertie
 							_("The sequence of path commands"),
 							NULL,
 							G_PARAM_WRITABLE));
-
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the path"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the path"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the path"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the path"),
-							0.0, G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
 }
 
 
Index: src/goocanvasitem.c
===================================================================
--- src/goocanvasitem.c	(revision 39)
+++ src/goocanvasitem.c	(working copy)
@@ -112,6 +112,38 @@ goo_canvas_item_base_init (gpointer g_if
       cpn_context.dispatcher = child_property_notify_dispatcher;
       _goo_canvas_item_child_property_notify_context = &cpn_context;
 
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("x",
+                                                                "X",
+                                                                _("The x coordinate of the item"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, 0.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("y",
+                                                                "Y",
+                                                                _("The y coordinate of the item"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, 0.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("width",
+                                                                _("Width"),
+                                                                _("The width of the item, or -1 to use the default width"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, -1.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("height",
+                                                                _("Height"),
+                                                                _("The height of the item, or -1 to use the default height"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, -1.0,
+                                                                G_PARAM_READWRITE));
+
       /* Mouse events. */
 
       /**
Index: src/goocanvasitemsimple.c
===================================================================
--- src/goocanvasitemsimple.c	(revision 39)
+++ src/goocanvasitemsimple.c	(working copy)
@@ -41,6 +41,13 @@
 enum {
   PROP_0,
 
+  /* overriden from the GooCanvasItem interface so that GObject does not
+   * complain. Override them again in derived items. */
+  PROP_X,
+  PROP_Y,
+  PROP_WIDTH,
+  PROP_HEIGHT,
+
   /* Basic drawing properties. */
   PROP_STROKE_PATTERN,
   PROP_FILL_PATTERN,
@@ -119,6 +126,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasItemSi
 static void
 goo_canvas_item_simple_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   /* Basic drawing properties. */
   g_object_class_install_property (gobject_class, PROP_STROKE_PATTERN,
                                    g_param_spec_boxed ("stroke-pattern",
@@ -447,6 +459,18 @@ goo_canvas_item_simple_get_common_proper
 
   switch (prop_id)
     {
+    case PROP_X:
+      g_warning("Cannot get the \"x\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_Y:
+      g_warning("Cannot get the \"y\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_WIDTH:
+      g_warning("Cannot get the \"width\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_HEIGHT:
+      g_warning("Cannot get the \"height\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
       /* Basic drawing properties. */
     case PROP_STROKE_PATTERN:
       svalue = goo_canvas_style_get_property (style, goo_canvas_style_stroke_pattern_id);
@@ -618,6 +642,18 @@ goo_canvas_item_simple_set_common_proper
 
   switch (prop_id)
     {
+    case PROP_X:
+      g_warning("Cannot set the \"x\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_Y:
+      g_warning("Cannot set the \"y\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_WIDTH:
+      g_warning("Cannot set the \"width\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
+    case PROP_HEIGHT:
+      g_warning("Cannot set the \"height\" property on a GooCanvasItemSimple. Override the property in a derived class instead.");
+      break;
       /* Basic drawing properties. */
     case PROP_STROKE_PATTERN:
       goo_canvas_style_set_property (style, goo_canvas_style_stroke_pattern_id, value);
Index: src/goocanvasitemmodel.c
===================================================================
--- src/goocanvasitemmodel.c	(revision 39)
+++ src/goocanvasitemmodel.c	(working copy)
@@ -109,6 +109,38 @@ goo_canvas_item_model_base_init (gpointe
       cpn_context.dispatcher = child_property_notify_dispatcher;
       _goo_canvas_item_model_child_property_notify_context = &cpn_context;
 
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("x",
+                                                                "X",
+                                                                _("The x coordinate of the item"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, 0.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("y",
+                                                                "Y",
+                                                                _("The y coordinate of the item"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, 0.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("width",
+                                                                _("Width"),
+                                                                _("The width of the item, or -1 to use the default width"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, -1.0,
+                                                                G_PARAM_READWRITE));
+
+      g_object_interface_install_property (g_iface,
+                                           g_param_spec_double ("height",
+                                                                _("Height"),
+                                                                _("The height of the item, or -1 to use the default height"),
+                                                                -G_MAXDOUBLE,
+                                                                G_MAXDOUBLE, -1.0,
+                                                                G_PARAM_READWRITE));
+
       /**
        * GooCanvasItemModel::child-added
        * @model: the item model that received the signal.
Index: src/goocanvaswidget.c
===================================================================
--- src/goocanvaswidget.c	(revision 39)
+++ src/goocanvaswidget.c	(working copy)
@@ -544,6 +544,11 @@ goo_canvas_widget_class_init (GooCanvasW
 				     goo_canvas_widget_accessible_factory_get_type ());
     }
 
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   g_object_class_install_property (gobject_class, PROP_WIDGET,
 				   g_param_spec_object ("widget",
 							_("Widget"),
@@ -551,39 +556,6 @@ goo_canvas_widget_class_init (GooCanvasW
 							GTK_TYPE_WIDGET,
 							G_PARAM_READWRITE));
 
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the widget"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the widget"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width of the widget, or -1 to use its requested width"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, -1.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height of the widget, or -1 to use its requested height"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, -1.0,
-							G_PARAM_READWRITE));
-
-
   g_object_class_install_property (gobject_class, PROP_ANCHOR,
 				   g_param_spec_enum ("anchor",
 						      _("Anchor"),
Index: src/goocanvastext.c
===================================================================
--- src/goocanvastext.c	(revision 39)
+++ src/goocanvastext.c	(working copy)
@@ -88,6 +88,11 @@ G_DEFINE_TYPE_WITH_CODE (GooCanvasText, 
 static void
 goo_canvas_text_install_common_properties (GObjectClass *gobject_class)
 {
+  g_object_class_override_property (gobject_class, PROP_X, "x");
+  g_object_class_override_property (gobject_class, PROP_Y, "y");
+  g_object_class_override_property (gobject_class, PROP_WIDTH, "width");
+  g_object_class_override_property (gobject_class, PROP_HEIGHT, "height");
+
   /* Text */
   g_object_class_install_property (gobject_class, PROP_TEXT,
 				   g_param_spec_string ("text",
@@ -119,40 +124,6 @@ goo_canvas_text_install_common_propertie
 						      PANGO_WRAP_WORD,
                                                       G_PARAM_READWRITE));
 
-  /* Position */
-  g_object_class_install_property (gobject_class, PROP_X,
-				   g_param_spec_double ("x",
-							"X",
-							_("The x coordinate of the text"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_Y,
-				   g_param_spec_double ("y",
-							"Y",
-							_("The y coordinate of the text"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, 0.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_WIDTH,
-				   g_param_spec_double ("width",
-							_("Width"),
-							_("The width to use to layout the text"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, -1.0,
-							G_PARAM_READWRITE));
-
-  g_object_class_install_property (gobject_class, PROP_HEIGHT,
-				   g_param_spec_double ("height",
-							_("Height"),
-							_("The height to use to layout the text, or -1 to use the natural height"),
-							-G_MAXDOUBLE,
-							G_MAXDOUBLE, -1.0,
-							G_PARAM_READWRITE));
-
-
   g_object_class_install_property (gobject_class, PROP_ANCHOR,
 				   g_param_spec_enum ("anchor",
 						      _("Anchor"),
