diff --git a/python/dune/perftool/ufl/preprocess.py b/python/dune/perftool/ufl/preprocess.py
index 5d7c93a371f9b003f502aabbb4eceb5b3e1476c9..a376f97c72a56feef5759190edea78668f1b70ee 100644
--- a/python/dune/perftool/ufl/preprocess.py
+++ b/python/dune/perftool/ufl/preprocess.py
@@ -3,6 +3,9 @@
 import ufl.classes as uc
 import ufl.algorithms.apply_function_pullbacks as afp
 import ufl.algorithms.apply_algebra_lowering as aal
+import ufl.algorithms.apply_derivatives as ad
+
+from dune.perftool.options import get_form_option
 
 from pytools import memoize
 
@@ -60,4 +63,6 @@ def apply_default_transformations(form):
 # Monkey patch UFL, such that we invert matrices in C++ instead of Python.
 # The latter only works for very small matrices. If this causes a problem at
 # some point, we should guard this monkey patch with an option.
+
 aal.LowerCompoundAlgebra.inverse = lambda s, o, A: s.reuse_if_untouched(o, A)
+ad.GenericDerivativeRuleset.inverse = lambda s, o, A: -uc.Dot(uc.Dot(o, A), o)