diff --git a/dumux/discretization/upwindscheme.hh b/dumux/discretization/upwindscheme.hh
index a8265664b29cc8adacb69f57dd02963b334ab86d..821030f2412bae6e1dba66614f339fa9205dbf41 100644
--- a/dumux/discretization/upwindscheme.hh
+++ b/dumux/discretization/upwindscheme.hh
@@ -56,9 +56,10 @@ public:
         static const Scalar upwindWeight = getParam<Scalar>("Implicit.UpwindWeight");
 
         const auto& scvf = fluxVars.scvFace();
-        const auto& elemVolVars = fluxVars.elemVolVars();
-        const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()];
-        const auto& outsideVolVars = elemVolVars[scvf.outsideScvIdx()];
+        const auto& insideScv = fluxVars.fvGeometry().scv(scvf.insideScvIdx());
+        const auto& outsideScv = fluxVars.fvGeometry().scv(scvf.outsideScvIdx());
+        const auto& insideVolVars = fluxVars.elemVolVars()[insideScv];
+        const auto& outsideVolVars = fluxVars.elemVolVars()[outsideScv];
 
         if (std::signbit(flux)) // if sign of flux is negative
             return flux*(upwindWeight*upwindTerm(outsideVolVars)