diff --git a/test/sumfact/poisson/facedir-facemod-variation/poisson_dg_only_skeletons_3d.ufl b/test/sumfact/poisson/facedir-facemod-variation/poisson_dg_only_skeletons_3d.ufl
index 46eea4a37d0621a1bac6a5f586375725c5ff3f64..98785a640583abbe9c409520923f4ff786a948fc 100644
--- a/test/sumfact/poisson/facedir-facemod-variation/poisson_dg_only_skeletons_3d.ufl
+++ b/test/sumfact/poisson/facedir-facemod-variation/poisson_dg_only_skeletons_3d.ufl
@@ -15,9 +15,19 @@ n = FacetNormal(cell)('+')
 
 # penalty factor
 alpha = 1.0
-h_ext = CellVolume(cell) / FacetArea(cell)
+
+# Note: Cell volume calculation by the MultiLinearGeometry is not accurate
+# enough (bug). Until this is fixed we just use 1 for h since the test is
+# synthetic anyway.
+# h_ext = CellVolume(cell) / FacetArea(cell)
+h_ext = 1
 gamma_ext = (alpha * degree * (degree + dim - 1)) / h_ext
-h_int = Min(CellVolume(cell)('+'), CellVolume(cell)('-')) / FacetArea(cell)
+
+# Note: Cell volume calculation by the MultiLinearGeometry is not accurate
+# enough (bug). Until this is fixed we just use 1 for h since the test is
+# synthetic anyway.
+# h_int = Min(CellVolume(cell)('+'), CellVolume(cell)('-')) / FacetArea(cell)
+h_int = 1
 gamma_int = (alpha * degree * (degree + dim - 1)) / h_int
 
 # SIPG: -1.0, IIPG: 0.0, NIPG: 1.0
diff --git a/test/sumfact/poisson/facedir-facemod-variation/sumfact_poisson_dg_3d_facedir_facemod_variation_driver.cc b/test/sumfact/poisson/facedir-facemod-variation/sumfact_poisson_dg_3d_facedir_facemod_variation_driver.cc
index 44b7b30b41a516a4b52a0af93ac159662d66b100..62c09a9a03b827dc316a4237ec6591ef81bf2c80 100644
--- a/test/sumfact/poisson/facedir-facemod-variation/sumfact_poisson_dg_3d_facedir_facemod_variation_driver.cc
+++ b/test/sumfact/poisson/facedir-facemod-variation/sumfact_poisson_dg_3d_facedir_facemod_variation_driver.cc
@@ -241,7 +241,7 @@ int main(int argc, char** argv){
       Dune::printvector(std::cout, native(r), "residual vector", "row");
 
 
-      std::cout.precision(17);
+      // std::cout.precision(17);
       std::vector<RangeType> residual(16);
       for (std::size_t i=0; i<16; ++i){
         residual[i] = native(r)[i];
@@ -253,7 +253,8 @@ int main(int argc, char** argv){
       std::cout << std::endl;
 
       // One 'correct' numerical solution for unstructured grid
-    std::vector<RangeType> solution {-0.0024731701973568277, -0.064863385404943089, -0.0018692117846729169, -0.065411955025839102, -0.0027796990290359252, -0.052239481231842126, -0.0018193481682935208, -0.063508021794159181, 0.065761076628550102, 0.0045404278062097835, 0.06063545488963621, 0.0029356233595935256, 0.059339670479959875, 0.0032536306959760684, 0.05626016802162942, 0.002238220754587723};
+      std::vector<RangeType> solution {-0.057104007824202004, -0.0024731701973568316, -0.046356852559280147, -0.0027796990290359386, -0.059846762373056507, -0.0018692117846729277, -0.059392343130923175, -0.001819348168293539, 0.0045404278062097974, 0.058001699047809038, 0.003253630695976081, 0.053457041807397923, 0.0029356233595935395, 0.055070262236853566, 0.0022382207545877291, 0.052144489358393387};
+
       std::cout << "is_permuation: "
                 << fuzzy_is_permutation(solution, residual) << std::endl;
       if (!fuzzy_is_permutation(solution, residual)){