diff --git a/dumux/multidomain/glue.hh b/dumux/multidomain/glue.hh
index e882fb9f2f8f7a8be2e64a01ece6601e2f238bf4..0237fe192f4c3dc93457b0052bd7be65842bbd4c 100644
--- a/dumux/multidomain/glue.hh
+++ b/dumux/multidomain/glue.hh
@@ -33,6 +33,7 @@
 
 #include <dune/common/timer.hh>
 #include <dune/common/iteratorrange.hh>
+#include <dune/common/promotiontraits.hh>
 #include <dune/geometry/affinegeometry.hh>
 #include <dune/geometry/type.hh>
 
@@ -82,9 +83,12 @@ class Intersection
     static constexpr int dimTarget = TargetGridView::dimension;
     static constexpr int dimIs = std::min(dimDomain, dimTarget);
 
-    using Scalar = typename DomainGridView::ctype;
-    using Geometry = Dune::AffineGeometry<Scalar, dimIs, dimWorld>;
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
+    using ctypeDomain = typename DomainGridView::ctype;
+    using ctypeTarget = typename TargetGridView::ctype;
+    using ctype = typename Dune::PromotionTraits<ctypeDomain, ctypeTarget>::PromotedType;
+
+    using Geometry = Dune::AffineGeometry<ctype, dimIs, dimWorld>;
+    using GlobalPosition = Dune::FieldVector<ctype, dimWorld>;
 
 public:
     Intersection(const DomainTree& domainTree, const TargetTree& targetTree)
@@ -149,9 +153,12 @@ class MultiDomainGlue
     using TargetEntitySet = GridViewGeometricEntitySet<TargetGridView, 0, TargetMapper>;
     using TargetTree = BoundingBoxTree<TargetEntitySet>;
 
-    using Scalar = typename DomainGridView::ctype;
+    using ctypeDomain = typename DomainGridView::ctype;
+    using ctypeTarget = typename TargetGridView::ctype;
+    using ctype = typename Dune::PromotionTraits<ctypeDomain, ctypeTarget>::PromotedType;
+
     enum { dimWorld = DomainGridView::dimensionworld };
-    using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>;
+    using GlobalPosition = Dune::FieldVector<ctype, dimWorld>;
 
 public:
     // export intersection container type