diff --git a/src/analysis/PolynomialP.hpp b/src/analysis/PolynomialP.hpp
index 26f86c7b03010dd408cc3884b7e70eeacf21eea5..8b8bdb512bb6ad879594bf9eabec484f67abb147 100644
--- a/src/analysis/PolynomialP.hpp
+++ b/src/analysis/PolynomialP.hpp
@@ -614,7 +614,7 @@ integrate(const PolynomialP<N, Dimension> Q, const std::array<TinyVector<Dimensi
       for (size_t i = 1; i < weight_list.size(); ++i) {
         value += weight_list[i] * Q(t(point_list[i]));
       }
-      integral = value;
+      integral = t.jacobianDeterminant() * value;
     } else {
       const QuadratureFormula<2>& lN = QuadratureManager::instance().getSquareFormula(GaussQuadratureDescriptor(N));
       auto point_list                = lN.pointList();
diff --git a/src/analysis/TaylorPolynomial.hpp b/src/analysis/TaylorPolynomial.hpp
index 3ff9323279dd802f8faee2a62dcc36251419bfd2..ff417f1430ffd80e6b9395bc6dc8a64023720702 100644
--- a/src/analysis/TaylorPolynomial.hpp
+++ b/src/analysis/TaylorPolynomial.hpp
@@ -641,7 +641,7 @@ integrate(const TaylorPolynomial<N, Dimension> Q, const std::array<TinyVector<Di
       for (size_t i = 1; i < weight_list.size(); ++i) {
         value += weight_list[i] * Q(t(point_list[i]));
       }
-      integral = value;
+      integral = t.jacobianDeterminant() * value;
     } else {
       const QuadratureFormula<2>& lN = QuadratureManager::instance().getSquareFormula(GaussQuadratureDescriptor(N));
       auto point_list                = lN.pointList();
diff --git a/tests/test_PolynomialP.cpp b/tests/test_PolynomialP.cpp
index 3ab52b3da50334c75404936dc456cdbd20954e9b..d791b0d0b35fc5d2768f9d4cd122f9ae9c4bd957 100644
--- a/tests/test_PolynomialP.cpp
+++ b/tests/test_PolynomialP.cpp
@@ -189,6 +189,7 @@ TEST_CASE("PolynomialP", "[analysis]")
     for (size_t i = 1; i < weight_list2.size(); ++i) {
       value2 += weight_list2[i] * p1(t(point_list2[i]));
     }
+    value2 *= t.jacobianDeterminant();
     const QuadratureFormula<1>& l1 = QuadratureManager::instance().getLineFormula(GaussQuadratureDescriptor(2));
     const LineTransformation<2> u{positions4[0], positions4[1]};
     double value4 = 0.;
diff --git a/tests/test_TaylorPolynomial.cpp b/tests/test_TaylorPolynomial.cpp
index eec530eafeef396d12ff3c651881fa53c30249e8..41ba9d4b4cfaf53ee92053a07663ac2048092d2e 100644
--- a/tests/test_TaylorPolynomial.cpp
+++ b/tests/test_TaylorPolynomial.cpp
@@ -199,6 +199,7 @@ TEST_CASE("TaylorPolynomial", "[analysis]")
     for (size_t i = 1; i < weight_list2.size(); ++i) {
       value2 += weight_list2[i] * p1(t(point_list2[i]));
     }
+    value2 *= t.jacobianDeterminant();
     const QuadratureFormula<1>& l1 = QuadratureManager::instance().getLineFormula(GaussQuadratureDescriptor(2));
     const LineTransformation<2> u{positions4[0], positions4[1]};
     double value4 = 0.;