diff --git a/examples/wxSerialConfigDialog.py b/examples/wxSerialConfigDialog.py
index 44e2f79..bb79d87 100755
--- a/examples/wxSerialConfigDialog.py
+++ b/examples/wxSerialConfigDialog.py
@@ -42,7 +42,7 @@
         self.label_2 = wx.StaticText(self, -1, "Port")
         self.choice_port = wx.Choice(self, -1, choices=[])
         self.label_1 = wx.StaticText(self, -1, "Baudrate")
-        self.choice_baudrate = wx.Choice(self, -1, choices=["choice 1"])
+        self.combo_box_baudrate = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN)
         self.sizer_1_staticbox = wx.StaticBox(self, -1, "Basics")
         self.panel_format = wx.Panel(self, -1)
         self.label_3 = wx.StaticText(self.panel_format, -1, "Data Bits")
@@ -73,7 +73,6 @@
     def __set_properties(self):
         # begin wxGlade: SerialConfigDialog.__set_properties
         self.SetTitle("Serial Port Configuration")
-        self.choice_baudrate.SetSelection(0)
         self.choice_databits.SetSelection(0)
         self.choice_stopbits.SetSelection(0)
         self.choice_parity.SetSelection(0)
@@ -87,7 +86,7 @@
 
         if not self.show & SHOW_BAUDRATE:
             self.label_1.Hide()
-            self.choice_baudrate.Hide()
+            self.combo_box_baudrate.Hide()
         if not self.show & SHOW_FORMAT:
             self.panel_format.Hide()
         if not self.show & SHOW_TIMEOUT:
@@ -106,13 +105,17 @@
                 preferred_index = n
         self.choice_port.SetSelection(preferred_index)
         if self.show & SHOW_BAUDRATE:
+            preferred_index = None
             # fill in baud rates and select current setting
-            self.choice_baudrate.Clear()
+            self.combo_box_baudrate.Clear()
             for n, baudrate in enumerate(self.serial.BAUDRATES):
-                self.choice_baudrate.Append(str(baudrate))
+                self.combo_box_baudrate.Append(str(baudrate))
                 if self.serial.baudrate == baudrate:
-                    index = n
-            self.choice_baudrate.SetSelection(index)
+                    preferred_index = n
+            if preferred_index is not None:
+                self.combo_box_baudrate.SetSelection(preferred_index)
+            else:
+                self.combo_box_baudrate.SetValue(u'%d' % (self.serial.baudrate,))
         if self.show & SHOW_FORMAT:
             # fill in data bits and select current setting
             self.choice_databits.Clear()
@@ -167,7 +170,7 @@
         sizer_basics.Add(self.label_2, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
         sizer_basics.Add(self.choice_port, 0, wx.EXPAND, 0)
         sizer_basics.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 4)
-        sizer_basics.Add(self.choice_baudrate, 0, wx.EXPAND, 0)
+        sizer_basics.Add(self.combo_box_baudrate, 0, wx.EXPAND, 0)
         sizer_basics.AddGrowableCol(1)
         sizer_1.Add(sizer_basics, 0, wx.EXPAND, 0)
         sizer_2.Add(sizer_1, 0, wx.EXPAND, 0)
@@ -208,7 +211,19 @@
         success = True
         self.serial.port = self.ports[self.choice_port.GetSelection()]
         if self.show & SHOW_BAUDRATE:
-            self.serial.baudrate = self.serial.BAUDRATES[self.choice_baudrate.GetSelection()]
+            #~ self.serial.baudrate = self.serial.BAUDRATES[self.combo_box_baudrate.GetSelection()]
+            try:
+                b = int(self.combo_box_baudrate.GetValue())
+            except ValueError:
+                with wx.MessageDialog(
+                        self,
+                        'Baudrate must be a numeric value',
+                        'Value Error',
+                        wx.OK | wx.ICON_ERROR) as dlg:
+                    dlg.ShowModal()
+                success = False
+            else:
+                self.serial.baudrate = b
         if self.show & SHOW_FORMAT:
             self.serial.bytesize = self.serial.BYTESIZES[self.choice_databits.GetSelection()]
             self.serial.stopbits = self.serial.STOPBITS[self.choice_stopbits.GetSelection()]
