Index: mythtv/libs/libmyth/mythcontext.cpp
===================================================================
--- mythtv/libs/libmyth/mythcontext.cpp	(revision 12546)
+++ mythtv/libs/libmyth/mythcontext.cpp	(working copy)
@@ -1280,7 +1280,7 @@
     d->m_backgroundimage = NULL;
 
     themename = GetSetting("MenuTheme");
-    d->m_menuthemepathname = FindThemeDir(themename) +"/";
+    d->m_menuthemepathname = FindMenuThemeDir(themename) +"/";
 
     d->bigfontsize    = GetNumSetting("QtFontBig",    25);
     d->mediumfontsize = GetNumSetting("QtFontMedium", 16);
@@ -1682,6 +1682,14 @@
     return true;
 }
 
+/** \fn FindThemeDir(const QString &themename)
+ *  \brief Returns the full path to the theme denoted by themename
+ *
+ *   If the theme cannot be found falls back to the G.A.N.T. theme.
+ *   If the G.A.N.T. theme doesn't exist then returns an empty string.
+ *  \param themename The theme name.
+ *  \return Path to theme or empty string.
+ */
 QString MythContext::FindThemeDir(const QString &themename)
 {
     QString testdir = MythContext::GetConfDir() + "/themes/" + themename;
@@ -1695,14 +1703,34 @@
     if (dir.exists())
         return testdir;
 
-    testdir = "../menutest/" + themename;
+    testdir = GetThemesParentDir() + "G.A.N.T.";
     dir.setPath(testdir);
     if (dir.exists())
+    {
+        VERBOSE(VB_IMPORTANT, QString("Could not find theme: %1 - "
+                "Switching to G.A.N.T.").arg(themename));
+        SaveSetting("Theme", "G.A.N.T.");
         return testdir;
+    }
 
+    VERBOSE(VB_IMPORTANT, QString("Could not find theme: %1").arg(themename));
+    return "";
+}
 
-    // Don't complain about the "default" theme being missing
-    if (themename == QObject::tr("Default"))
+/** \fn FindMenuThemeDir(const QString &menuname)
+ *  \brief Returns the full path to the menu theme denoted by menuname
+ *
+ *   If the theme cannot be found falls back to the default menu.
+ *   If the default menu theme doesn't exist then returns an empty string.
+ *  \param menuname The menutheme name.
+ *  \return Path to theme or empty string.
+ */
+QString MythContext::FindMenuThemeDir(const QString &menuname)
+{
+    QString testdir;
+    QDir dir;
+
+    if (menuname == "default")
     {
         testdir = GetShareDir();
         dir.setPath(testdir);
@@ -1710,19 +1738,33 @@
             return testdir;
     }
 
-    testdir = GetThemesParentDir() + "G.A.N.T.";
+    testdir = MythContext::GetConfDir() + "/themes/" + menuname;
+
     dir.setPath(testdir);
     if (dir.exists())
+        return testdir;
+
+    testdir = GetThemesParentDir() + menuname;
+    dir.setPath(testdir);
+    if (dir.exists())
+        return testdir;
+
+    testdir = GetShareDir();
+    dir.setPath(testdir);
+    if (dir.exists())
     {
         VERBOSE(VB_IMPORTANT, QString("Could not find theme: %1 - "
-                "Switching to G.A.N.T.").arg(themename));
-        SaveSetting("Theme", "G.A.N.T.");
+                "Switching to default").arg(menuname));
+        SaveSetting("MenuTheme", "default");
         return testdir;
     }
+    else {
+        VERBOSE(VB_IMPORTANT, QString("Could not find menu theme: %1 - Fallback to default failed.").arg(menuname));
+    }
 
-    VERBOSE(VB_IMPORTANT, QString("Could not find theme: %1").arg(themename));
     return "";
 }
+
 QString MythContext::GetMenuThemeDir(void)
 {
     return d->m_menuthemepathname;
Index: mythtv/libs/libmyth/mythcontext.h
===================================================================
--- mythtv/libs/libmyth/mythcontext.h	(revision 12546)
+++ mythtv/libs/libmyth/mythcontext.h	(working copy)
@@ -279,6 +279,7 @@
     bool ParseGeometryOverride(const QString geometry);
 
     QString FindThemeDir(const QString &themename);
+    QString FindMenuThemeDir(const QString &themename);
     QString GetThemeDir(void);
     QValueList<QString> GetThemeSearchPath(void);
 
Index: mythtv/programs/mythfrontend/globalsettings.cpp
===================================================================
--- mythtv/programs/mythfrontend/globalsettings.cpp	(revision 12546)
+++ mythtv/programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -809,7 +809,7 @@
     QDir themes(gContext->GetThemesParentDir());
     themes.setFilter(QDir::Dirs);
     themes.setSorting(QDir::Name | QDir::IgnoreCase);
-    gc->addSelection(QObject::tr("Default"));
+    gc->addSelection(QObject::tr("Default"), "default");
     const QFileInfoList *fil = themes.entryInfoList(QDir::Dirs);
     if (!fil)
         return gc;
