diff -rupN gnome-tweak-tool/gtweak/tweaks/tweak_interface.py gnome-tweak-tool_new/gtweak/tweaks/tweak_interface.py
--- gnome-tweak-tool/gtweak/tweaks/tweak_interface.py	2011-08-28 10:23:33.101037541 +0200
+++ gnome-tweak-tool_new/gtweak/tweaks/tweak_interface.py	2011-08-28 10:24:08.454500354 +0200
@@ -22,7 +22,7 @@ from gi.repository import Gtk
 import gtweak
 from gtweak.utils import walk_directories, make_combo_list_with_default
 from gtweak.tweakmodel import TWEAK_GROUP_THEME
-from gtweak.widgets import GSettingsSwitchTweak, GSettingsComboTweak
+from gtweak.widgets import GSettingsSwitchTweak, GSettingsComboTweak, GSettingsColorSchemeTweak
 
 class GtkThemeSwitcher(GSettingsComboTweak):
     def __init__(self, **options):
@@ -102,4 +102,5 @@ TWEAKS = (
     KeyThemeSwitcher(group_name=TWEAK_GROUP_THEME),
     IconThemeSwitcher(group_name=TWEAK_GROUP_THEME),
     GtkThemeSwitcher(group_name=TWEAK_GROUP_THEME),
+    GSettingsColorSchemeTweak(group_name=TWEAK_GROUP_THEME),
 )
diff -rupN gnome-tweak-tool/gtweak/widgets.py gnome-tweak-tool_new/gtweak/widgets.py
--- gnome-tweak-tool/gtweak/widgets.py	2011-08-28 10:23:33.104037919 +0200
+++ gnome-tweak-tool_new/gtweak/widgets.py	2011-08-28 10:51:28.844458943 +0200
@@ -29,6 +29,7 @@ def build_label_beside_widget(txt, *widg
         hbox: Use an existing HBox, not a new one
         info: Informational text to be shown after the label
         warning: Warning text to be shown after the label
+        yalign: yalign property to use for label
     """
     def make_image(icon, tip):
         image = Gtk.Image.new_from_icon_name(icon, Gtk.IconSize.MENU)
@@ -43,6 +44,7 @@ def build_label_beside_widget(txt, *widg
     hbox.props.spacing = 4
     lbl = Gtk.Label(txt)
     lbl.props.xalign = 0.0
+    lbl.props.yalign = kwargs.get("yalign", 0.5)
     hbox.pack_start(lbl, True, True, 0)
 
     if kwargs.get("info"):
@@ -247,3 +249,95 @@ class ZipFileChooserButton(Gtk.FileChoos
         #self.set_width_chars(15)
         self.set_local_only(True)
 
+class _ColorButton(Gtk.Button):
+    def __init__(self, master, title, fg_name, bg_name):
+        Gtk.Button.__init__(self)
+        self.master = master
+        self.title = title
+        self.fg_name = fg_name
+        self.bg_name = bg_name
+        self.fg_color = Gdk.Color(0, 0, 0)
+        self.bg_color = Gdk.Color(0, 0, 0)
+        self.evbox = Gtk.EventBox()
+        self.label = Gtk.Label(self.title)
+        self.evbox.add(self.label)
+        self.add(self.evbox)
+        self.connect("clicked", self._show_dialog)
+    
+    def set_colors(self, colors):
+        if self.fg_name in colors:
+            self.label.modify_fg(Gtk.StateType.NORMAL, colors[self.fg_name])
+            self.fg_color = colors[self.fg_name]
+        if self.bg_name in colors:
+            self.evbox.modify_bg(Gtk.StateType.NORMAL, colors[self.bg_name])
+            self.bg_color = colors[self.bg_name]
+    
+    def _show_dialog(self, widget):
+       dialog = _ColorDialog("Pick "+self.title, self.fg_color, self.bg_color)
+       response = dialog.run()
+       if response == Gtk.ResponseType.OK:
+           new_fg, new_bg = dialog.get_colors()
+           changed = (new_fg != self.fg_color or new_bg != self.bg_color)
+           self.fg_color = new_fg
+           self.bg_color = new_bg
+           if changed:
+               self.master.update_colors()
+       dialog.destroy()
+   
+    def get_colorstr(self):
+        return self.fg_name+":"+self.fg_color.to_string()+"\n"+self.bg_name+":"+self.bg_color.to_string()+"\n"
+
+class _ColorDialog(Gtk.Dialog):
+    def __init__(self, name, fg_color, bg_color):
+        Gtk.Dialog.__init__(self, name)
+        notebook = Gtk.Notebook()
+        self.fg_selector = Gtk.ColorSelection()
+        self.bg_selector = Gtk.ColorSelection()
+        self.fg_selector.set_current_color(fg_color)
+        self.bg_selector.set_current_color(bg_color)
+        notebook.append_page(self.fg_selector, Gtk.Label("Text"))
+        notebook.append_page(self.bg_selector, Gtk.Label("Background"))
+        self.add_buttons("gtk-cancel", Gtk.ResponseType.CANCEL, "gtk-ok", Gtk.ResponseType.OK)
+        self.vbox.pack_start(notebook, True, True, 2)
+        notebook.show_all()
+        
+    def get_colors(self):
+        return [self.fg_selector.get_current_color(), self.bg_selector.get_current_color()]
+
+class GSettingsColorSchemeTweak(_GSettingsTweak):
+    def __init__(self, **options):
+        _GSettingsTweak.__init__(self, "org.gnome.desktop.interface", "gtk-color-scheme", **options)
+        self.buttons = (_ColorButton(self, "Base Colors", "text_color", "base_color"),
+                        _ColorButton(self, "Control Colors", "fg_color", "bg_color"),
+                        _ColorButton(self, "Tooltip Colors", "tooltip_fg_color", "tooltip_bg_color"),
+                        _ColorButton(self, "Selection Colors", "selected_fg_color", "selected_bg_color"))
+        
+        vbox = Gtk.VBox()
+        for button in self.buttons: vbox.pack_start(button, True, True, 2)
+        
+        self.widget_for_size_group = vbox
+        self.widget = build_label_beside_widget("GTK+ color scheme", vbox, yalign=0.0)
+        
+        self.gtk_settings = Gtk.Settings().get_default()
+        self.gtk_settings.connect("notify::gtk-color-scheme", self._get_colors)
+        
+        self._get_colors()
+    
+    def _get_colors(self, setting=None, prop=None):
+        scheme = self.gtk_settings.get_properties("gtk-color-scheme")[0].split("\n")
+        colors = dict()
+        for entry in scheme:
+            try:
+                # The color-string sometimes seems to contain a stray quote...
+                name, value = entry.replace(' ','').replace('"','').split(':')
+                colors.update({name: Gdk.color_parse(value)})
+            except:
+                pass
+        for button in self.buttons: button.set_colors(colors)
+        
+    def update_colors(self):
+        val = ""
+        for button in self.buttons: val += button.get_colorstr()
+        self.settings.set_string("gtk-color-scheme", val)
+        self.settings.apply()
+
