Index: libs/libmythtv/osdtypes.cpp
===================================================================
--- libs/libmythtv/osdtypes.cpp	(revision 22982)
+++ libs/libmythtv/osdtypes.cpp	(working copy)
@@ -2600,7 +2600,8 @@
 }
 
 OSDType708CC::OSDType708CC(const QString &name, TTFFont *fonts[48],
-			   int xoff, int yoff, int dispw, int disph) : 
+                          int xoff, int yoff, int dispw, int disph,
+                          float wmult, float hmult) : 
     OSDType(name)
 {
     xoffset = xoff;
@@ -2610,6 +2611,10 @@
 
     for (uint i = 0; i < 48; i++)
         m_fonts[i] = fonts[i];
+
+    QRect rect = QRect(0, 0, 0, 0);
+    m_box = new OSDTypeBox("cc_background", rect, wmult, hmult);
+    m_ccbackground = gContext->GetNumSetting("CCBackground", 0);
 }
 
 QRect OSDType708CC::CalcBounds(const OSDSurface *surface,
@@ -2765,6 +2770,15 @@
                 font->setShadow(+2, +2);
             }
 
+            if (m_ccbackground)
+            {
+                QRect rect = QRect(0, 0, text_length + 1, 
+                                   (font->Size() * 3 / 2) + 1);
+                m_box->SetRect(rect, m_wmult, m_hmult);
+                m_box->Draw(surface, 0, 0, ul.x() + tot_width - 2,
+                                           ul.y() + total_height - 2);
+            }
+
             font->DrawString(surface,
                              ul.x() + tot_width, ul.y() + total_height + 2,
                              list[i]->str, maxx, maxy,
Index: libs/libmythtv/osdtypes.h
===================================================================
--- libs/libmythtv/osdtypes.h	(revision 22982)
+++ libs/libmythtv/osdtypes.h	(working copy)
@@ -604,7 +604,8 @@
 {
   public:
     OSDType708CC(const QString &name, TTFFont *fonts[48],
-                 int xoff, int yoff, int dispw, int disph);
+                 int xoff, int yoff, int dispw, int disph,
+                 float wmult, float hmult);
     virtual ~OSDType708CC() {}
 
     void Reinit(float, float) {}
@@ -625,6 +626,9 @@
 
     TTFFont *m_fonts[48];
 
+    OSDTypeBox *m_box;
+    int m_ccbackground;
+    float m_wmult, m_hmult;
     int xoffset, yoffset, displaywidth, displayheight;
 };
 
Index: libs/libmythtv/osd.cpp
===================================================================
--- libs/libmythtv/osd.cpp	(revision 22982)
+++ libs/libmythtv/osd.cpp	(working copy)
@@ -325,7 +325,7 @@
     AddSet(container, name);
     OSDType708CC *ccpage = 
         new OSDType708CC(name, ccfonts, xoffset, yoffset, 
-                         displaywidth, displayheight);
+                         displaywidth, displayheight, wmult, hmult);
     container->AddType(ccpage);
 
     VERBOSE(VB_VBI, LOC + "InitCC708() -- end");
Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 22982)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -1950,10 +1950,10 @@
 static HostCheckBox *CCBackground()
 {
     HostCheckBox *gc = new HostCheckBox("CCBackground");
-    gc->setLabel(QObject::tr("Black background for analog closed captioning"));
+    gc->setLabel(QObject::tr("Black background for closed captioning"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr(
-                        "If enabled, analog captions will be displayed "
+                        "If enabled, captions will be displayed "
                         "over a black space for maximum contrast. Otherwise, "
                         "captions will use outlined text over the picture."));
     return gc;

