diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp
index 7eb42e2cd968192aab70095b17c8cf2966d6a582..6acd96e218297c1618e64846c00d6a3d4672e6bf 100644
--- a/Geo/gmshEdge.cpp
+++ b/Geo/gmshEdge.cpp
@@ -143,8 +143,13 @@ int gmshEdge::minimumMeshSegments () const
 
 int gmshEdge::minimumDrawSegments () const
 {
+  int n = List_Nbr(c->Control_Points) - 1;
+  if(!n) n = GEdge::minimumDrawSegments();
+
   if(geomType() == Line)
-    return GEdge::minimumDrawSegments () ;
-  else
+    return n;
+  else if(geomType() == Circle || geomType() == Ellipse)
     return CTX.geom.circle_points;
+  else
+    return 10 * n;
 }