diff --git a/graf3d/gl/inc/TGLRnrCtx.h b/graf3d/gl/inc/TGLRnrCtx.h
index 60881fc8533a0b9f49e950ed65683203bab3e4e5..750d3799808ed95c20a55865f4d6e4259a9a72c1 100644
--- a/graf3d/gl/inc/TGLRnrCtx.h
+++ b/graf3d/gl/inc/TGLRnrCtx.h
@@ -104,7 +104,8 @@ protected:
    Bool_t          fHasTimedOut;
 
    // Highlight / Selection stuff
-   Bool_t          fHighlight;
+   Bool_t          fHighlight;        // True when in highlight.
+   Bool_t          fHighlightOutline; // True when in highlight-outline.
    Bool_t          fSelection;
    Bool_t          fSecSelection;
    Int_t           fPickRadius;
@@ -186,6 +187,9 @@ public:
    // Highlight / Selection stuff
    Bool_t  Highlight()    const           { return fHighlight;      }
    void    SetHighlight(Bool_t hil)       { fHighlight = hil;       }
+   Bool_t  HighlightOutline() const       { return fHighlightOutline; }
+   void    SetHighlightOutline(Bool_t ho) { fHighlightOutline = ho;   }
+
    Bool_t  Selection()    const           { return fSelection;      }
    void    SetSelection(Bool_t sel)       { fSelection = sel;       }
    Bool_t  SecSelection() const           { return fSecSelection;   }
diff --git a/graf3d/gl/src/TGLObject.cxx b/graf3d/gl/src/TGLObject.cxx
index ed728ad9699d39b8ae08223ecd6cd4c9c3ffc3e4..c729f6587a779ac27c67450e593c8af582813790 100644
--- a/graf3d/gl/src/TGLObject.cxx
+++ b/graf3d/gl/src/TGLObject.cxx
@@ -48,7 +48,7 @@ Bool_t TGLObject::ShouldDLCache(const TGLRnrCtx & rnrCtx) const
    if (!fDLCache ||
        !fScene   ||
        (rnrCtx.SecSelection() && SupportsSecondarySelect()) ||
-       (fMultiColor && (rnrCtx.Highlight() || rnrCtx.IsDrawPassOutlineLine())))
+       (fMultiColor && (rnrCtx.HighlightOutline() || rnrCtx.IsDrawPassOutlineLine())))
    {
       return kFALSE;
    }
diff --git a/graf3d/gl/src/TGLPhysicalShape.cxx b/graf3d/gl/src/TGLPhysicalShape.cxx
index b4b80eb1c28f1b2f15f7c6eb30854767a0d43e75..429e83058cac2ce52c08bb05e3e6e2b3cdd6c3fe 100644
--- a/graf3d/gl/src/TGLPhysicalShape.cxx
+++ b/graf3d/gl/src/TGLPhysicalShape.cxx
@@ -382,6 +382,7 @@ void TGLPhysicalShape::Draw(TGLRnrCtx & rnrCtx) const
       // TGLCapabilitySwitch bs(GL_BLEND, kTRUE), lss(GL_LINE_SMOOTH, kTRUE);
 
       rnrCtx.SetHighlight(kTRUE);
+      rnrCtx.SetHighlightOutline(kTRUE);
       TGLUtil::LockColor();
       Int_t first_outer = (rnrCtx.CombiLOD() == TGLRnrCtx::kLODHigh) ? 0 : 4;
       for (int i = first_outer; i < 8; ++i)
@@ -391,7 +392,7 @@ void TGLPhysicalShape::Draw(TGLRnrCtx & rnrCtx) const
          fLogicalShape->Draw(rnrCtx);
       }
       TGLUtil::UnlockColor();
-      rnrCtx.SetHighlight(kFALSE);
+      rnrCtx.SetHighlightOutline(kFALSE);
 
       SetupGLColors(rnrCtx);
       for (int i = 0; i < 4; ++i)
@@ -401,6 +402,7 @@ void TGLPhysicalShape::Draw(TGLRnrCtx & rnrCtx) const
          fLogicalShape->Draw(rnrCtx);
       }
       glViewport(vp.X(), vp.Y(), vp.Width(), vp.Height());
+      rnrCtx.SetHighlight(kFALSE);
 
       SetupGLColors(rnrCtx);
       Float_t dr[2];
diff --git a/graf3d/gl/src/TGLRnrCtx.cxx b/graf3d/gl/src/TGLRnrCtx.cxx
index 5e2a1996e3adc756189b0550c6dc32b67c27e378..29ff34098ffe08c491ba1ba5f264730ae77a5626 100644
--- a/graf3d/gl/src/TGLRnrCtx.cxx
+++ b/graf3d/gl/src/TGLRnrCtx.cxx
@@ -74,9 +74,8 @@ TGLRnrCtx::TGLRnrCtx(TGLViewerBase* viewer) :
    fIsRunning    (kFALSE),
    fHasTimedOut  (kFALSE),
 
-   fHighlight    (kFALSE),
-   fSelection    (kFALSE),
-   fSecSelection (kFALSE),
+   fHighlight    (kFALSE),  fHighlightOutline (kFALSE),
+   fSelection    (kFALSE),  fSecSelection     (kFALSE),
    fPickRadius   (0),
    fPickRectangle(0),
    fSelectBuffer (0),