diff --git a/DDCore/src/plugins/ShapePlugins.cpp b/DDCore/src/plugins/ShapePlugins.cpp
index 9234479049ebb0cecf74bbb26557c62a86a9dead..29dd992f60bb680d2a14619dd228d122634eddc3 100644
--- a/DDCore/src/plugins/ShapePlugins.cpp
+++ b/DDCore/src/plugins/ShapePlugins.cpp
@@ -62,7 +62,7 @@ static Handle<TObject> create_Polycone(Detector&, xml_h element)   {
   double start = e.startphi(0e0), deltaphi = e.deltaphi(2*M_PI);
   for(xml_coll_t c(e,_U(zplane)); c; ++c, ++num)  {
     xml_comp_t plane(c);
-    rmin.emplace_back(plane.rmin());
+    rmin.emplace_back(plane.rmin(0.0));
     rmax.emplace_back(plane.rmax());
     z.emplace_back(plane.z());
   }
@@ -82,7 +82,7 @@ static Handle<TObject> create_ConeSegment(Detector&, xml_h element)   {
   xml_attr_t bphi = element.attr_nothrow(_U(phi2));
   if ( aphi || bphi )  {
     double phi1 = e.phi1(0.0);
-    double phi2 = e.phi2(2*M_PI) - phi1;
+    double phi2 = e.phi2(2*M_PI);
     /// Old naming: angles from [phi1,phi2]
     solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),phi1,phi2);
   }
@@ -90,7 +90,7 @@ static Handle<TObject> create_ConeSegment(Detector&, xml_h element)   {
     double start_phi = e.startphi(0.0);
     double delta_phi = e.deltaphi(2*M_PI);
     /// New naming: angles from [startphi,startphi+deltaphi]
-    solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),start_phi,delta_phi);
+    solid = ConeSegment(e.dz(),e.rmin1(0.0),e.rmax1(),e.rmin2(0.0),e.rmax2(),start_phi,start_phi+delta_phi);
   }
   if ( e.hasAttr(_U(name)) ) solid->SetName(e.attr<string>(_U(name)).c_str());
   return solid;
@@ -231,7 +231,8 @@ DECLARE_XML_SHAPE(Trd2__shape_constructor,create_Trd2)
 
 static Handle<TObject> create_Torus(Detector&, xml_h element)   {
   xml_dim_t e(element);
-  Solid solid = Torus(e.r(),e.rmin(),e.rmax(),e.phi(M_PI),e.deltaphi(2.*M_PI));
+  double startphi = e.hasAttr(_U(phi)) ? e.phi() : e.startphi(M_PI);
+  Solid solid = Torus(e.r(), e.rmin(), e.rmax(), phi, e.deltaphi(2.*M_PI));
   if ( e.hasAttr(_U(name)) ) solid->SetName(e.attr<string>(_U(name)).c_str());
   return solid;
 }