diff --git a/gui/browser.cpp b/gui/browser.cpp
index f4719f4..3cf8bbc 100644
--- a/gui/browser.cpp
+++ b/gui/browser.cpp
@@ -186,6 +186,12 @@ void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
 			int selection = _fileList->getSelected();
 			if (selection >= 0) {
 				_choice = _nodeContent[selection];
+
+				// If the user selected a file, when the browser is a directory
+				// browser, we select the current dir as result instead.
+				// TODO: We might think of changing this behavior.
+				if (!_choice.isDirectory() && _isDirBrowser)
+					_choice = _node;
 			} else {
 				_choice = _node;
 			}
@@ -214,7 +220,7 @@ void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
 		if (_nodeContent[data].isDirectory()) {
 			_node = _nodeContent[data];
 			updateListing();
-		} else {
+		} else if (!_isDirBrowser) {
 			_choice = _nodeContent[data];
 			setResult(1);
 			close();
@@ -233,24 +239,32 @@ void BrowserDialog::updateListing() {
 	ConfMan.set("browser_lastpath", _node.getPath());
 
 	// Read in the data from the file system
-	Common::FSNode::ListMode listMode =
-	         _isDirBrowser ? Common::FSNode::kListDirectoriesOnly
-	                       : Common::FSNode::kListAll;
-	if (!_node.getChildren(_nodeContent, listMode)) {
+	if (!_node.getChildren(_nodeContent, Common::FSNode::kListAll))
 		_nodeContent.clear();
-	} else {
+	else
 		Common::sort(_nodeContent.begin(), _nodeContent.end());
-	}
 
 	// Populate the ListWidget
 	Common::StringList list;
+	ListWidget::ColorList colors;
 	for (Common::FSList::iterator i = _nodeContent.begin(); i != _nodeContent.end(); ++i) {
-		if (!_isDirBrowser && i->isDirectory())
+		if (i->isDirectory())
 			list.push_back(i->getDisplayName() + "/");
 		else
 			list.push_back(i->getDisplayName());
+
+		if (_isDirBrowser) {
+			if (i->isDirectory())
+				colors.push_back(ThemeEngine::kFontColorNormal);
+			else
+				colors.push_back(ThemeEngine::kFontColorAlternate);
+		}
 	}
-	_fileList->setList(list);
+
+	if (_isDirBrowser)
+		_fileList->setList(list, &colors);
+	else
+		_fileList->setList(list);
 	_fileList->scrollTo(0);
 
 	// Finally, redraw
