diff --git a/graf3d/gl/inc/TGLUtil.h b/graf3d/gl/inc/TGLUtil.h
index 56838ebd396727f9f0913a84ebd473e0a07c61a9..509d59e825c5a01e1ae0d0bdecfdbbf8c53c7d34 100644
--- a/graf3d/gl/inc/TGLUtil.h
+++ b/graf3d/gl/inc/TGLUtil.h
@@ -1223,6 +1223,9 @@ void DrawBoxFrontTextured(Double_t xMin, Double_t xMax, Double_t yMin,
    
 void DrawBoxWithGradientFill(Double_t y1, Double_t y2, Double_t x1, Double_t x2,
                              const Double_t *rgba1, const Double_t *rgba2);
+   
+void DrawQuadStripWithRadialGradientFill(unsigned nPoints, const Double_t *inner, const Double_t *innerRGBA,
+                                        const Double_t *outer, const Double_t *outerRGBA);
 
 #ifndef __CINT__
 void DrawTrapezoidTextured(const Double_t ver[][2], Double_t zMin, Double_t zMax,
diff --git a/graf3d/gl/src/TGLUtil.cxx b/graf3d/gl/src/TGLUtil.cxx
index cd677caea913b380b98457f76c801d05ad0cf615..109c4101e7d05b1b686cb96a473b744ead94c149 100644
--- a/graf3d/gl/src/TGLUtil.cxx
+++ b/graf3d/gl/src/TGLUtil.cxx
@@ -3102,6 +3102,34 @@ void DrawBoxWithGradientFill(Double_t y1, Double_t y2, Double_t x1, Double_t x2,
    glEnd();
 }
 
+//______________________________________________________________________________
+void DrawQuadStripWithRadialGradientFill(unsigned nPoints, const Double_t *inner, const Double_t *innerRGBA,
+                                         const Double_t *outer, const Double_t *outerRGBA)
+{
+   //TODO: is it possible to use GLdouble to avoid problems with Double_t/GLdouble if they
+   //are not the same type?
+
+   assert(nPoints != 0 &&
+          "DrawQuadStripWithRadialGradientFill, invalid number of points");
+   assert(inner != 0 &&
+          "DrawQuadStripWithRadialGradientFill, parameter 'inner' is null");
+   assert(innerRGBA != 0 &&
+          "DrawQuadStripWithRadialGradientFill, parameter 'innerRGBA' is null");
+   assert(outer != 0 &&
+          "DrawQuadStripWithRadialGradientFill, parameter 'outer' is null");
+   assert(outerRGBA != 0 &&
+          "DrawQuadStripWithRadialGradientFill, parameter 'outerRGBA' is null");
+
+   glBegin(GL_QUAD_STRIP);
+   for (UInt_t j = 0; j < nPoints; ++j) {
+      glColor4dv(innerRGBA);
+      glVertex2dv(inner + j * 2);
+      glColor4dv(outerRGBA);
+      glVertex2dv(outer + j * 2);
+   }
+   glEnd();
+}
+
 //______________________________________________________________________________
 void DrawCylinder(TGLQuadric *quadric, Double_t xMin, Double_t xMax, Double_t yMin,
                   Double_t yMax, Double_t zMin, Double_t zMax)