diff --git a/Source/UI/ControlPanel.cpp b/Source/UI/ControlPanel.cpp
index b6565fd1a5e7a39e440490813f2c22cfeef8e479..2bca3db57e9e3384dc16c35d372d76027c77bd48 100755
--- a/Source/UI/ControlPanel.cpp
+++ b/Source/UI/ControlPanel.cpp
@@ -1008,7 +1008,7 @@ void ControlPanel::saveStateToXml(XmlElement* xml)
 	controlPanelState->setAttribute("recordPath", filenameComponent->getCurrentFile().getFullPathName());
     controlPanelState->setAttribute("prependText",prependText->getText());
     controlPanelState->setAttribute("appendText",appendText->getText());
-    controlPanelState->setAttribute("recordEngine",recordSelector->getSelectedId());
+    controlPanelState->setAttribute("recordEngine",recordEngines[recordSelector->getSelectedId()-1]->getID());
 
     audioEditor->saveStateToXml(xml);
 
@@ -1037,7 +1037,14 @@ void ControlPanel::loadStateFromXml(XmlElement* xml)
 			}
             appendText->setText(xmlNode->getStringAttribute("appendText", ""), dontSendNotification);
             prependText->setText(xmlNode->getStringAttribute("prependText", ""), dontSendNotification);
-            recordSelector->setSelectedId(xmlNode->getIntAttribute("recordEngine",1), sendNotificationSync);
+			String selectedEngine = xmlNode->getStringAttribute("recordEngine");
+			for (int i = 0; i < recordEngines.size(); i++)
+			{
+				if (recordEngines[i]->getID() == selectedEngine)
+				{
+					recordSelector->setSelectedId(i + 1, sendNotification);
+				}
+			}
 
             bool isOpen = xmlNode->getBoolAttribute("isOpen");
             openState(isOpen);