diff --git a/applications/poisson_dg_tensor/poisson_dg_tensor.ufl b/applications/poisson_dg_tensor/poisson_dg_tensor.ufl
index d3c95a5226e26981cf78e5d8b78a686150a9310d..2b1a7b9803016a50b609a9d5379461c20252310c 100644
--- a/applications/poisson_dg_tensor/poisson_dg_tensor.ufl
+++ b/applications/poisson_dg_tensor/poisson_dg_tensor.ufl
@@ -33,3 +33,4 @@ r = (inner(A*grad(u), grad(v)) + (c*u-f)*v)*dx \
   - gamma_ext*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/applications/poisson_dg_tensor/verify.mini b/applications/poisson_dg_tensor/verify.mini
index de6607fd853bde3d0f69235100abefbd428afe5b..b1f4672e5ca10c6f1873392a6b5033eaff0a52b4 100644
--- a/applications/poisson_dg_tensor/verify.mini
+++ b/applications/poisson_dg_tensor/verify.mini
@@ -13,7 +13,6 @@ fastdg = 1
 sumfact = 1
 vectorize_quad = 1
 vectorize_grads = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-6
 
 [formcompiler.ufl_variants]
diff --git a/python/dune/perftool/sumfact/geometry.py b/python/dune/perftool/sumfact/geometry.py
index 8df024fee40ed4b0d48885de25f3e9cf20f1c685..e0f4a85b1048e5d743e524fb38155319a32e67ef 100644
--- a/python/dune/perftool/sumfact/geometry.py
+++ b/python/dune/perftool/sumfact/geometry.py
@@ -107,11 +107,25 @@ def define_corner(name, low):
                                              0 if low else 2 ** local_dimension() - 1)
 
 
-@preamble
+@class_member(classtag="operator")
 def define_mesh_width(name):
-    define_corner(name, False)
-    lower = name_lowerleft_corner()
-    return "{} -= {};".format(name, lower)
+    from dune.perftool.pdelab.localoperator import lop_template_range_field
+    rft = lop_template_range_field()
+    define_mesh_width_eval(name)
+    return "Dune::FieldVector<{}, {}> {};".format(rft, world_dimension(), name)
+
+
+def define_mesh_width_eval(name):
+    from dune.perftool.pdelab.localoperator import name_ansatz_gfs_constructor_param
+    gfs = name_ansatz_gfs_constructor_param()
+    code = ["{",
+            "  auto e = *({}.gridView().template begin<0>());".format(gfs),
+            "  {} = e.geometry().corner((1<<{}) - 1);".format(name, world_dimension()),
+            "  {} -= e.geometry().corner(0);".format(name),
+            "}",
+            ]
+    instruction(code="\n".join(code),
+                kernel="operator")
 
 
 def name_lowerleft_corner():