diff --git a/python/dune/perftool/pdelab/__init__.py b/python/dune/perftool/pdelab/__init__.py
index 9a6e6ae44d1013096af81bfb9246816c44472e2a..2450b8a6912550eefd6c98cd70a06228b6ad216e 100644
--- a/python/dune/perftool/pdelab/__init__.py
+++ b/python/dune/perftool/pdelab/__init__.py
@@ -14,8 +14,8 @@ from dune.perftool.pdelab.basis import (pymbolic_basis,
                                         pymbolic_reference_gradient,
                                         )
 from dune.perftool.pdelab.geometry import (component_iname,
-                                           name_cell_volume,
-                                           name_facet_area,
+                                           pymbolic_cell_volume,
+                                           pymbolic_facet_area,
                                            pymbolic_facet_jacobian_determinant,
                                            pymbolic_jacobian_determinant,
                                            pymbolic_jacobian_inverse_transposed,
@@ -143,11 +143,11 @@ class PDELabInterface(object):
     def pymbolic_unit_outer_normal(self):
         return pymbolic_unit_outer_normal()
 
-    def name_cell_volume(self, restriction):
-        return name_cell_volume(restriction)
+    def pymbolic_cell_volume(self, restriction):
+        return pymbolic_cell_volume(restriction)
 
-    def name_facet_area(self):
-        return name_facet_area()
+    def pymbolic_facet_area(self):
+        return pymbolic_facet_area()
 
     #
     # Quadrature related generator functions
diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py
index bb590f981f99c0f5095b1ca242cf3f7c46a4dc54..03af2447883cbcd74bbd86b43950f614cff4aecd 100644
--- a/python/dune/perftool/pdelab/geometry.py
+++ b/python/dune/perftool/pdelab/geometry.py
@@ -472,10 +472,13 @@ def define_cell_volume(name, restriction):
     return "auto {} = {}.volume();".format(name, geo)
 
 
-def name_cell_volume(restriction):
-    name = restricted_name("volume", restriction)
-    define_cell_volume(name, restriction)
-    return name
+def pymbolic_cell_volume(restriction):
+    if get_option("constant_transformation_matrix"):
+        return pymbolic_jacobian_determinant()
+    else:
+        name = restricted_name("volume", restriction)
+        define_cell_volume(name, restriction)
+        return prim.Variable(name)
 
 
 @preamble
@@ -485,7 +488,10 @@ def define_facet_area(name):
     return "auto {} = {}.volume();".format(name, geo)
 
 
-def name_facet_area():
-    name = "area"
-    define_facet_area(name)
-    return name
+def pymbolic_facet_area():
+    if get_option("constant_transformation_matrix"):
+        return pymbolic_facet_jacobian_determinant()
+    else:
+        name = "area"
+        define_facet_area(name)
+        return prim.Variable(name)
diff --git a/python/dune/perftool/sumfact/__init__.py b/python/dune/perftool/sumfact/__init__.py
index 3a96f275ca0d3f20646f770af661db4282772095..fa28b0f4e744164349c92712088a7e09873161e1 100644
--- a/python/dune/perftool/sumfact/__init__.py
+++ b/python/dune/perftool/sumfact/__init__.py
@@ -91,3 +91,7 @@ class SumFactInterface(PDELabInterface):
     def pymbolic_facet_jacobian_determinant(self):
         from dune.perftool.sumfact.geometry import pymbolic_facet_jacobian_determinant
         return pymbolic_facet_jacobian_determinant()
+
+    def pymbolic_facet_area(self):
+        from dune.perftool.sumfact.geometry import pymbolic_facet_area
+        return pymbolic_facet_area()
diff --git a/python/dune/perftool/sumfact/geometry.py b/python/dune/perftool/sumfact/geometry.py
index e0f4a85b1048e5d743e524fb38155319a32e67ef..95f383800ac5aa3276ce37830b153c4cfd23f6a1 100644
--- a/python/dune/perftool/sumfact/geometry.py
+++ b/python/dune/perftool/sumfact/geometry.py
@@ -253,3 +253,11 @@ def define_constant_facet_jacobian_determinant_eval(name):
     instruction(code="\n".join(code),
                 kernel="operator",
                 )
+
+
+def pymbolic_facet_area():
+    if get_option("constant_transformation_matrix"):
+        return pymbolic_facet_jacobian_determinant()
+    else:
+        from dune.perftool.pdelab.geometry import pymbolic_facet_area as _norm
+        return _norm()
diff --git a/python/dune/perftool/ufl/visitor.py b/python/dune/perftool/ufl/visitor.py
index ae1ccdae1a3f686c3fb2e43e8b82252980657d49..972a4bb7ac39c847c841993b12165b8264a36f73 100644
--- a/python/dune/perftool/ufl/visitor.py
+++ b/python/dune/perftool/ufl/visitor.py
@@ -452,10 +452,10 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker):
         if self.measure == 'exterior_facet':
             restriction = Restriction.NEGATIVE
 
-        return prim.Variable(self.interface.name_cell_volume(restriction))
+        return self.interface.pymbolic_cell_volume(restriction)
 
     def facet_area(self, o):
-        return prim.Variable(self.interface.name_facet_area())
+        return self.interface.pymbolic_facet_area()
 
     #
     # Equality/Hashability of the visitor