Index: src/orca/orca_gui_prefs.py
===================================================================
--- src/orca/orca_gui_prefs.py	(revision 4492)
+++ src/orca/orca_gui_prefs.py	(working copy)
@@ -25,6 +25,7 @@
 __copyright__ = "Copyright (c) 2005-2008 Sun Microsystems Inc."
 __license__   = "LGPL"
 
+import copy
 import os
 import sys
 import debug
@@ -144,6 +145,7 @@
         self.uppercaseVoice = None
         self.window = None
         self.workingFactories = None
+        self.savedVoices = None
 
     def init(self):
         """Initialize the Orca configuration GUI. Read the users current
@@ -152,6 +154,12 @@
         accordingly.
         """
 
+        # storing the old default voice,
+        # so that we can revert back to the default
+        # when the user presses cancel.
+        #
+        self.savedVoices = copy.deepcopy(settings.voices)
+
         # ***** Key Bindings treeview initialization *****
 
         self.keyBindView = self.widgets.get_widget("keyBindingsTreeview")
@@ -2426,6 +2434,7 @@
         rate = widget.get_value()
         voiceType = self.get_widget("voiceTypes").get_active_text()
         self._setRateForVoiceType(voiceType, rate)
+        settings.voices[settings.DEFAULT_VOICE][acss.ACSS.RATE] = rate
 
     def pitchValueChanged(self, widget):
         """Signal handler for the "value_changed" signal for the pitchScale
@@ -2440,6 +2449,7 @@
         pitch = widget.get_value()
         voiceType = self.get_widget("voiceTypes").get_active_text()
         self._setPitchForVoiceType(voiceType, pitch)
+        settings.voices[settings.DEFAULT_VOICE][acss.ACSS.AVERAGE_PITCH] = pitch
 
     def volumeValueChanged(self, widget):
         """Signal handler for the "value_changed" signal for the voiceScale
@@ -2454,6 +2464,7 @@
         volume = widget.get_value()
         voiceType = self.get_widget("voiceTypes").get_active_text()
         self._setVolumeForVoiceType(voiceType, volume)
+        settings.voices[settings.DEFAULT_VOICE][acss.ACSS.GAIN] = volume
 
     def speechIndentationChecked(self, widget):
         """Signal handler for the "toggled" signal for the
@@ -4013,6 +4024,11 @@
         - widget: the component that generated the signal.
         """
 
+        # Restore the default rate/pitch/gain,
+        # in case the user played with the sliders.
+        #
+        settings.voices = copy.deepcopy(self.savedVoices)
+
         enable = self.get_widget("speechSupportCheckbutton").get_active()
         self.prefsDict["enableSpeech"] = enable
 
@@ -4066,6 +4082,11 @@
         self._cleanupSpeechServers()
         self.get_widget("orcaSetupWindow").destroy()
 
+        # Restore the default rate/pitch/gain,
+        # in case the user played with the sliders.
+        #
+        settings.voices = copy.deepcopy(self.savedVoices)
+
     def okButtonClicked(self, widget):
         """Signal handler for the "clicked" signal for the okButton
            GtkButton widget. The user has clicked the OK button.
