 pages/whats_on.ecpp | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/pages/whats_on.ecpp b/pages/whats_on.ecpp
index aa7bd0e..ad65ca5 100644
--- a/pages/whats_on.ecpp
+++ b/pages/whats_on.ecpp
@@ -239,8 +239,32 @@ if (type == "now") {
           logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
         }
         if (!logo_available) {
-//          chanlogofile = StringReplace(epgEvent->Caption(), "/", "~") + ".png";
-          chanlogofile = std::string(cToSvToLower(cToSvReplace(epgEvent->Caption(), "/", "~").concat(".png"), g_locale));
+          chanlogofile = cToSvReplace(epgEvent->Caption(), "/", "~").concat(".png");
+          chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
+          logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
+        }
+        if (!logo_available) {
+          chanlogofile = std::string(cToSvToLower(chanlogofile, g_locale));
+          chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
+          logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
+        }
+        if (!logo_available) {
+          chanlogofile = cToSvReplace(epgEvent->Caption(), "/", "_").concat(".svg");
+          chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
+          logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
+        }
+        if (!logo_available) {
+          chanlogofile = std::string(cToSvToLower(chanlogofile, g_locale));
+          chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
+          logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
+        }
+        if (!logo_available) {
+          chanlogofile = cToSvReplace(epgEvent->Caption(), "/", "~").concat(".svg");
+          chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
+          logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
+        }
+        if (!logo_available) {
+          chanlogofile = std::string(cToSvToLower(chanlogofile, g_locale));
           chanlogopath = LiveSetup().GetChanLogoDir() + chanlogofile;
           logo_available = stat (chanlogopath.c_str(), &chanfilebuf) == 0;
         }
 tntconfig.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tntconfig.cpp b/tntconfig.cpp
index a7b7cdc..e86d446 100644
--- a/tntconfig.cpp
+++ b/tntconfig.cpp
@@ -228,6 +228,12 @@ namespace vdrlive {
                LiveSetup().GetChanLogoDir(),
                "/$1.png",
            "image/png");
+          MapUrl(app,
+               "^/chanlogos/(.+)\\.svg",
+               "content",
+               LiveSetup().GetChanLogoDir(),
+               "/$1.svg",
+           "image/svg+xml");
     }
 
     // the following rules provide a search scheme for images. The first
