diff --git a/Nasal/aircraft.nas b/Nasal/aircraft.nas
index a0140c4e5..8013c4359 100644
--- a/Nasal/aircraft.nas
+++ b/Nasal/aircraft.nas
@@ -514,7 +514,6 @@ var livery = {
 		me.parents = [gui.OverlaySelector.new("Select Livery", dir, nameprop, sortprop,
 				"sim/model/livery/file")];
 		me.dialog = me.parents[0];
-		data.add(nameprop);
 	},
 };
 
diff --git a/Nasal/gui.nas b/Nasal/gui.nas
index 82f8b48fd..8de4b6b39 100644
--- a/Nasal/gui.nas
+++ b/Nasal/gui.nas
@@ -311,21 +311,19 @@ var OverlaySelector = {
         m.parents = [OverlaySelector, Dialog];
 
         m.dir = string.normpath(getprop("/sim/fg-root") ~ '/' ~ dir) ~ '/';
-        m.nameprop = nameprop;
-        m.sortprop = sortprop or nameprop;
+        var relpath = func(p) substr(p, p[0] == `/`);
+        m.nameprop = relpath(nameprop);
+        m.sortprop = relpath(sortprop or nameprop);
         m.mpprop = mpprop;
         m.callback = callback;
         m.result = props.initNode(data.getNode("result", 1), "");
         m.listener = setlistener(m.result, func(n) m.select(n.getValue()));
 
         m.prop.getNode("group/text/label").setValue(title);
+        m.prop.getNode("group/button/binding/script").setValue('gui.Dialog.instance["' ~ name ~ '"].close()');
         m.list = m.prop.getNode("list");
         m.list.getNode("property").setValue(m.result.getPath());
 
-        if (m.nameprop[0] == `/`)
-            m.nameprop = substr(m.nameprop, 1);
-        if (m.sortprop[0] == `/`)
-            m.sortprop = substr(m.sortprop, 1);
         if (m.mpprop)
             aircraft.data.add(m.nameprop);
 
diff --git a/gui/dialogs/overlay-select.xml b/gui/dialogs/overlay-select.xml
index b3db9b613..95dc13796 100644
--- a/gui/dialogs/overlay-select.xml
+++ b/gui/dialogs/overlay-select.xml
@@ -11,7 +11,7 @@
 		<empty><stretch>1</stretch></empty>
 
 		<text>
-			<label>set by gui.OverlaySelector</label>
+			<label>$name</label>
 		</text>
 
 		<empty><stretch>1</stretch></empty>
@@ -25,7 +25,8 @@
 			<border>2</border>
 
 			<binding>
-				<command>dialog-close</command>
+				<command>nasal</command>
+				<script>$close</script>
 			</binding>
 		</button>
 	</group>
@@ -35,10 +36,10 @@
 	<list>
 		<halign>fill</halign>
 		<pref-height>200</pref-height>
-		<property>set by gui.OverlaySelector</property>
+		<property>$result</property>
 		<binding>
 			<command>dialog-apply</command>
 		</binding>
-		<value>set by gui.OverlaySelector</value>
+		<value>$value</value>
 	</list>
 </PropertyList>