diff --git a/Rendering/Core/vtkTextMapper.cxx b/Rendering/Core/vtkTextMapper.cxx
index da885b6a0e48dedcd55e20ce3db784089c03ef2f..6d9ea59c4c34726b36b7a1aee88d50317fcc14fe 100644
--- a/Rendering/Core/vtkTextMapper.cxx
+++ b/Rendering/Core/vtkTextMapper.cxx
@@ -367,7 +367,7 @@ void vtkTextMapper::RenderOverlay(vtkViewport *viewport, vtkActor2D *actor)
   vtkDebugMacro(<<"RenderOverlay called");
 
   vtkRenderer *ren = NULL;
-  if (this->Input)
+  if (this->Input && this->Input[0])
     {
     vtkWindow *win = viewport->GetVTKWindow();
     if (!win)
@@ -394,15 +394,15 @@ void vtkTextMapper::RenderOverlay(vtkViewport *viewport, vtkActor2D *actor)
       info->Set(vtkProp::GeneralTextureUnit(),
         this->Texture->GetTextureUnit());
       }
-    }
 
-  vtkDebugMacro(<<"PolyData::RenderOverlay called");
-  this->Mapper->RenderOverlay(viewport, actor);
+    vtkDebugMacro(<<"PolyData::RenderOverlay called");
+    this->Mapper->RenderOverlay(viewport, actor);
 
-  // clean up
-  if (ren)
-    {
-    this->Texture->PostRender(ren);
+    // clean up
+    if (ren)
+      {
+      this->Texture->PostRender(ren);
+      }
     }
 
   vtkDebugMacro(<<"Superclass::RenderOverlay called");
diff --git a/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx b/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx
index ad66e496301f4c0390ce9728ffdc810f0912b0dc..03f6d00c115016da1b610a2b078628603df29d21 100644
--- a/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx
+++ b/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx
@@ -172,6 +172,19 @@ int TestFreeTypeTextMapperNoMath(int argc, char *argv[])
   mapper11->SetInput("oTeVaVoVAW");
   actor11->SetPosition(300, 200);
 
+  // Empty string, solid background: should not render
+  vtkNew<vtkTextMapper> mapper12;
+  vtkNew<vtkActor2D> actor12;
+  actor12->SetMapper(mapper12.GetPointer());
+  mapper12->GetTextProperty()->SetFontSize(16);
+  mapper12->GetTextProperty()->SetColor(1.0, 0.0, 0.0);
+  mapper12->GetTextProperty()->SetBackgroundColor(1.0, 0.5, 1.0);
+  mapper12->GetTextProperty()->SetBackgroundOpacity(1.0);
+  mapper12->GetTextProperty()->SetJustificationToRight();
+  mapper12->GetTextProperty()->SetVerticalJustificationToCentered();
+  mapper12->SetInput("");
+  actor12->SetPosition(0, 0);
+
   // Boring rendering setup....
 
   vtkNew<vtkRenderer> ren;
@@ -193,6 +206,7 @@ int TestFreeTypeTextMapperNoMath(int argc, char *argv[])
   ren->AddActor(actor9.GetPointer());
   ren->AddActor(actor10.GetPointer());
   ren->AddActor(actor11.GetPointer());
+  ren->AddActor(actor12.GetPointer());
 
   win->SetMultiSamples(0);
   win->Render();
diff --git a/Rendering/FreeType/vtkFreeTypeTools.cxx b/Rendering/FreeType/vtkFreeTypeTools.cxx
index 114f5f85c37980e7839360e6dd424054e36a4def..e071bea9d113900f2a385588780a1ae6f4fe775e 100644
--- a/Rendering/FreeType/vtkFreeTypeTools.cxx
+++ b/Rendering/FreeType/vtkFreeTypeTools.cxx
@@ -1239,6 +1239,14 @@ bool vtkFreeTypeTools::RenderStringInternal(vtkTextProperty *tprop,
     return false;
     }
 
+  if (str.empty())
+    {
+    data->Initialize();
+    textDims[0] = 0;
+    textDims[1] = 0;
+    return true;
+    }
+
   ImageMetaData metaData;
 
   // Setup the metadata cache