diff --git a/gdk-pixbuf/gdk-pixbuf-core.h b/gdk-pixbuf/gdk-pixbuf-core.h
index 35d3f97..dd500fa 100644
--- a/gdk-pixbuf/gdk-pixbuf-core.h
+++ b/gdk-pixbuf/gdk-pixbuf-core.h
@@ -96,6 +96,7 @@ void       gdk_pixbuf_unref    (GdkPixbuf *pixbuf);
 GdkColorspace gdk_pixbuf_get_colorspace      (const GdkPixbuf *pixbuf);
 int           gdk_pixbuf_get_n_channels      (const GdkPixbuf *pixbuf);
 gboolean      gdk_pixbuf_get_has_alpha       (const GdkPixbuf *pixbuf);
+gchar        *gdk_pixbuf_get_description     (const GdkPixbuf *pixbuf);
 int           gdk_pixbuf_get_bits_per_sample (const GdkPixbuf *pixbuf);
 guchar       *gdk_pixbuf_get_pixels          (const GdkPixbuf *pixbuf);
 int           gdk_pixbuf_get_width           (const GdkPixbuf *pixbuf);
diff --git a/gdk-pixbuf/gdk-pixbuf-data.c b/gdk-pixbuf/gdk-pixbuf-data.c
index 5f4ce8e..c2caefa 100644
--- a/gdk-pixbuf/gdk-pixbuf-data.c
+++ b/gdk-pixbuf/gdk-pixbuf-data.c
@@ -70,6 +70,7 @@ gdk_pixbuf_new_from_data (const guchar *data, GdkColorspace colorspace, gboolean
 			       "height", height,
 			       "rowstride", rowstride,
 			       "pixels", data,
+			       "description", NULL,
 			       NULL);
         
 	pixbuf->destroy_fn = destroy_fn;
diff --git a/gdk-pixbuf/gdk-pixbuf-private.h b/gdk-pixbuf/gdk-pixbuf-private.h
index c060bd7..653abea 100644
--- a/gdk-pixbuf/gdk-pixbuf-private.h
+++ b/gdk-pixbuf/gdk-pixbuf-private.h
@@ -73,6 +73,9 @@ struct _GdkPixbuf {
 
 	/* Do we have an alpha channel? */
 	guint has_alpha : 1;
+
+        /* A text description of the pixbuf */
+        gchar *description;
 };
 
 struct _GdkPixbufClass {
diff --git a/gdk-pixbuf/gdk-pixbuf.c b/gdk-pixbuf/gdk-pixbuf.c
index 525173a..41d0e52 100644
--- a/gdk-pixbuf/gdk-pixbuf.c
+++ b/gdk-pixbuf/gdk-pixbuf.c
@@ -56,6 +56,7 @@ enum
   PROP_COLORSPACE,
   PROP_N_CHANNELS,
   PROP_HAS_ALPHA,
+  PROP_DESCRIPTION,
   PROP_BITS_PER_SAMPLE,
   PROP_WIDTH,
   PROP_HEIGHT,
@@ -118,6 +119,14 @@ gdk_pixbuf_class_init (GdkPixbufClass *klass)
                                                                FALSE,
                                                                PIXBUF_PARAM_FLAGS));
 
+        g_object_class_install_property (object_class,
+                                         PROP_DESCRIPTION,
+                                         g_param_spec_string ("description",
+                                                               P_("Description"),
+                                                               P_("Description of the pixbuf"),
+                                                               NULL,
+                                                               G_PARAM_READWRITE));
+
         /**
          * GdkPixbuf:bits-per-sample:
          *
@@ -239,6 +248,7 @@ free_buffer (guchar *pixels, gpointer data)
  * gdk_pixbuf_new:
  * @colorspace: Color space for image
  * @has_alpha: Whether the image should have transparency information
+ * @description: Description of the pixbuf
  * @bits_per_sample: Number of bits per color sample
  * @width: Width of image in pixels, must be > 0
  * @height: Height of image in pixels, must be > 0
@@ -436,6 +446,24 @@ gdk_pixbuf_get_has_alpha (const GdkPixbuf *pixbuf)
 }
 
 /**
+ * gdk_pixbuf_get_description:
+ * @pixbuf: A pixbuf.
+ *
+ * Returns the textual description of the pixbuf.
+ *
+ * Return value: The text description of the pixmap, or %NULL if it
+ * has not been set. This is a nul-terminated string that should
+ * not be freed.
+ **/
+gchar *
+gdk_pixbuf_get_description (const GdkPixbuf *pixbuf)
+{
+	g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
+
+	return pixbuf->description;
+}
+
+/**
  * gdk_pixbuf_get_bits_per_sample:
  * @pixbuf: A pixbuf.
  *
@@ -713,6 +741,9 @@ gdk_pixbuf_set_property (GObject         *object,
           case PROP_HAS_ALPHA:
                   pixbuf->has_alpha = g_value_get_boolean (value);
                   break;
+          case PROP_DESCRIPTION:
+                  pixbuf->description = g_strdup (g_value_get_string(value));
+                  break;
           case PROP_BITS_PER_SAMPLE:
                   pixbuf->bits_per_sample = g_value_get_int (value);
                   break;
@@ -753,6 +784,9 @@ gdk_pixbuf_get_property (GObject         *object,
           case PROP_HAS_ALPHA:
                   g_value_set_boolean (value, gdk_pixbuf_get_has_alpha (pixbuf));
                   break;
+          case PROP_DESCRIPTION:
+                  g_value_set_string (value, gdk_pixbuf_get_description (pixbuf));
+                  break;
           case PROP_BITS_PER_SAMPLE:
                   g_value_set_int (value, gdk_pixbuf_get_bits_per_sample (pixbuf));
                   break;
diff --git a/gdk-pixbuf/gdk-pixbuf.symbols b/gdk-pixbuf/gdk-pixbuf.symbols
index ad13135..dd28790 100644
--- a/gdk-pixbuf/gdk-pixbuf.symbols
+++ b/gdk-pixbuf/gdk-pixbuf.symbols
@@ -21,6 +21,7 @@ gdk_pixbuf_new
 gdk_pixbuf_get_bits_per_sample
 gdk_pixbuf_get_colorspace
 gdk_pixbuf_get_has_alpha
+gdk_pixbuf_get_description
 gdk_pixbuf_get_height
 gdk_pixbuf_get_n_channels
 gdk_pixbuf_get_pixels
