diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index b364de1..fd0e771 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -1625,6 +1625,7 @@ gtk_font_selection_dialog_get_apply_button
 gtk_font_selection_get_font
 gtk_font_selection_dialog_get_font
 #endif
+gtk_font_selection_get_color
 gtk_font_selection_get_face
 gtk_font_selection_get_face_list
 gtk_font_selection_get_family
@@ -1632,13 +1633,16 @@ gtk_font_selection_get_family_list
 gtk_font_selection_get_font_name
 gtk_font_selection_get_preview_entry
 gtk_font_selection_get_preview_text
+gtk_font_selection_get_select_color
 gtk_font_selection_get_size
 gtk_font_selection_get_size_entry
 gtk_font_selection_get_size_list
 gtk_font_selection_get_type G_GNUC_CONST
 gtk_font_selection_new
+gtk_font_selection_set_color
 gtk_font_selection_set_font_name
 gtk_font_selection_set_preview_text
+gtk_font_selection_set_select_color
 #endif
 #endif
 
diff --git a/gtk/gtkfontsel.c b/gtk/gtkfontsel.c
index 949a371..d014ec6 100644
--- a/gtk/gtkfontsel.c
+++ b/gtk/gtkfontsel.c
@@ -43,6 +43,7 @@
 
 #include "gtkbutton.h"
 #include "gtkcellrenderertext.h"
+#include "gtkcolorbutton.h"
 #include "gtkentry.h"
 #include "gtkframe.h"
 #include "gtkhbbox.h"
@@ -277,7 +278,7 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
 {
   GtkWidget *scrolled_win;
   GtkWidget *text_box;
-  GtkWidget *table, *label;
+  GtkWidget *table, *label, *face_box;
   GtkWidget *font_label, *style_label;
   GtkWidget *vbox;
   GtkListStore *model;
@@ -336,7 +337,13 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
   gtk_widget_show (style_label);
   gtk_table_attach (GTK_TABLE (table), style_label, 1, 2, 0, 1,
 		    GTK_FILL, 0, 0, 0);
-  
+
+  face_box = gtk_vbox_new (FALSE, 6);
+  gtk_widget_show (face_box);
+  gtk_table_attach (GTK_TABLE (table), face_box, 1, 2, 1, 3,
+		    GTK_EXPAND | GTK_FILL,
+		    GTK_EXPAND | GTK_FILL, 0, 0);
+
   label = gtk_label_new_with_mnemonic (_("Si_ze:"));
   gtk_label_set_mnemonic_widget (GTK_LABEL (label),
                                  fontsel->size_entry);
@@ -415,11 +422,18 @@ gtk_font_selection_init (GtkFontSelection *fontsel)
 				  GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
   gtk_widget_show (fontsel->face_list);
   gtk_widget_show (scrolled_win);
-  gtk_table_attach (GTK_TABLE (table), scrolled_win, 1, 2, 1, 3,
-		    GTK_EXPAND | GTK_FILL,
-		    GTK_EXPAND | GTK_FILL, 0, 0);
+  gtk_box_pack_start (GTK_BOX (face_box), scrolled_win, TRUE, TRUE, 0);
   focus_chain = g_list_append (focus_chain, scrolled_win);
-  
+
+  fontsel->points_button = gtk_label_new_with_mnemonic (_("_Color:"));
+  gtk_misc_set_alignment (GTK_MISC (fontsel->points_button), 0.0, 0.5);
+  /* gtk_widget_show (fontsel->points_button); */
+  gtk_box_pack_start (GTK_BOX (face_box), fontsel->points_button, FALSE, TRUE, 0);
+
+  fontsel->pixels_button = gtk_color_button_new ();
+  /* gtk_widget_show (fontsel->pixels_button); */
+  gtk_box_pack_start (GTK_BOX (face_box), fontsel->pixels_button, FALSE, FALSE, 0);
+
   focus_chain = g_list_append (focus_chain, fontsel->size_entry);
 
   model = gtk_list_store_new (1, G_TYPE_INT);
@@ -1274,6 +1288,83 @@ gtk_font_selection_get_size (GtkFontSelection *fontsel)
 }
 
 /**
+ * gtk_font_selection_get_select_color:
+ * @fontsel: a #GtkFontSelection
+ *
+ * Whether the user can select a color.
+ *
+ * Return value: #TRUE if the dialog allows color selection
+ *
+ * Since: 2.16
+ **/
+gboolean
+gtk_font_selection_get_select_color (GtkFontSelection *fontsel)
+{
+  g_return_val_if_fail (GTK_IS_FONT_SELECTION (fontsel), FALSE);
+
+  return GTK_WIDGET_VISIBLE (fontsel->pixels_button);
+}
+
+/**
+ * gtk_font_selection_set_select_color:
+ * @fontsel: a #GtkFontSelection
+ *
+ * Whether the user can select a color.
+ *
+ * Return value: #TRUE if the dialog allows color selection
+ *
+ * Since: 2.16
+ **/
+void
+gtk_font_selection_set_select_color (GtkFontSelection *fontsel,
+                                     gboolean          select)
+{
+  g_return_val_if_fail (GTK_IS_FONT_SELECTION (fontsel), FALSE);
+
+  g_object_set (fontsel->pixels_button, "visible", select, NULL);
+  g_object_set (fontsel->points_button, "visible", select, NULL);
+}
+
+/**
+ * gtk_font_selection_get_color:
+ * @fontsel: a #GtkFontSelection
+ * @color: a #GdkColor to fill in with the current color.
+ *
+ * Sets @color to be the current color in the #GtkFontSelection widget.
+ *
+ * Since: 2.16
+ **/
+void
+gtk_font_selection_get_color (GtkFontSelection *fontsel,
+                              GdkColor         *color)
+{
+  g_return_if_fail (GTK_IS_FONT_SELECTION (fontsel));
+
+  gtk_color_button_get_color (GTK_COLOR_BUTTON (fontsel->pixels_button), color);
+}
+
+/**
+ * gtk_font_selection_set_color:
+ * @fontsel: a #GtkFontSelection
+ * @color: A #GdkColor to set the current color with.
+ *
+ * Sets the current color to be @color.
+ *
+ * Since: 2.16
+ **/
+void
+gtk_font_selection_set_color (GtkFontSelection *fontsel,
+                              const GdkColor   *color)
+{
+  g_return_if_fail (GTK_IS_FONT_SELECTION (fontsel));
+  g_return_if_fail (color != NULL);
+
+  gtk_color_button_set_color (GTK_COLOR_BUTTON (fontsel->pixels_button), color);
+
+  /* g_object_notify (G_OBJECT (fontsel), "color"); */
+}
+
+/**
  * gtk_font_selection_get_font:
  * @fontsel: a #GtkFontSelection
  *
diff --git a/gtk/gtkfontsel.h b/gtk/gtkfontsel.h
index 6cf9735..6e0a3d1 100644
--- a/gtk/gtkfontsel.h
+++ b/gtk/gtkfontsel.h
@@ -74,8 +74,8 @@ struct _GtkFontSelection
   GtkWidget *GSEAL (face_list);
   GtkWidget *GSEAL (size_entry);
   GtkWidget *GSEAL (size_list);
-  GtkWidget *GSEAL (pixels_button);     /* Unused, -mr */
-  GtkWidget *GSEAL (points_button);     /* Unused, -mr */
+  GtkWidget *GSEAL (pixels_button);     /* Actually a color button */
+  GtkWidget *GSEAL (points_button);     /* Actually a "Color" label */
   GtkWidget *GSEAL (filter_button);     /* Unused, -mr */
   GtkWidget *GSEAL (preview_entry);
 
@@ -154,6 +154,13 @@ PangoFontFamily *
 PangoFontFace *
              gtk_font_selection_get_face          (GtkFontSelection *fontsel);
 gint         gtk_font_selection_get_size          (GtkFontSelection *fontsel);
+gboolean     gtk_font_selection_get_select_color  (GtkFontSelection *fontsel);
+void         gtk_font_selection_set_select_color  (GtkFontSelection *fontsel,
+                                                   gboolean          select);
+void         gtk_font_selection_get_color         (GtkFontSelection *fontsel,
+                                                   GdkColor         *color);
+void         gtk_font_selection_set_color         (GtkFontSelection *fontsel,
+                                                   const GdkColor   *color);
 gchar*       gtk_font_selection_get_font_name     (GtkFontSelection *fontsel);
 
 #ifndef GTK_DISABLE_DEPRECATED
