diff --git a/grudge/execution.py b/grudge/execution.py
index 3afe569b7bc1330f82b673b1fb5ced76ac085455..546ef1659965bfe85b76a8ad2daa9a3a8144fbcc 100644
--- a/grudge/execution.py
+++ b/grudge/execution.py
@@ -527,13 +527,13 @@ class ExecutionMapper(mappers.Evaluator,
 
             # Cache operator
             cache_key = "diff_batch", in_grp, out_grp, tuple(insn.operators),\
-                field.dtype
+                field.entry_dtype
             try:
                 matrices_ary_dev = self.bound_op.operator_data_cache[cache_key]
             except KeyError:
                 matrices = repr_op.matrices(out_grp, in_grp)
                 matrices_ary = np.empty((
-                    noperators, out_grp.nunit_dofs, in_grp.nunit_dofs))
+                    noperators, out_grp.nunit_dofs, in_grp.nunit_dofs), dtype=field.entry_dtype)
                 for i, op in enumerate(insn.operators):
                     matrices_ary[i] = matrices[op.rst_axis]
                 matrices_ary_dev = self.array_context.from_numpy(matrices_ary)