diff --git a/dumux/decoupled/2p/diffusion/fv/fvvelocity2padaptive.hh b/dumux/decoupled/2p/diffusion/fv/fvvelocity2padaptive.hh
index 23cae493333620de98ab00edcf22ff253788b80c..0cdb01bab97d7ec95f330bbfcef1c2c7ca5da456 100644
--- a/dumux/decoupled/2p/diffusion/fv/fvvelocity2padaptive.hh
+++ b/dumux/decoupled/2p/diffusion/fv/fvvelocity2padaptive.hh
@@ -579,20 +579,18 @@ void FVVelocity2PAdaptive<TypeTag>::calculateVelocity(const Intersection& inters
         }
 
         //store velocities
-        Scalar faceArea = intersection.geometry().volume();
-
-            cellData.fluxData().setVelocity(wPhaseIdx, isIndexI, velocityW);
-            cellData.fluxData().setVelocity(nPhaseIdx, isIndexI, velocityNw);
-            cellData.fluxData().setVelocityMarker(isIndexI);
+        cellData.fluxData().setVelocity(wPhaseIdx, isIndexI, velocityW);
+        cellData.fluxData().setVelocity(nPhaseIdx, isIndexI, velocityNw);
+        cellData.fluxData().setVelocityMarker(isIndexI);
 
-            Scalar weightingFactor = faceArea / elementJ->template subEntity<1>(isIndexJ)->geometry().volume();
+        Scalar weightingFactor = std::pow(0.5, (dim - 1)*(elementI->level() - elementJ->level()));
 
-            velocityW *= weightingFactor;
-            velocityNw *= weightingFactor;
+        velocityW *= weightingFactor;
+        velocityNw *= weightingFactor;
 
-            cellDataJ.fluxData().addVelocity(wPhaseIdx, isIndexJ, velocityW);
-            cellDataJ.fluxData().addVelocity(nPhaseIdx, isIndexJ, velocityNw);
-            cellDataJ.fluxData().setVelocityMarker(isIndexJ);
+        cellDataJ.fluxData().addVelocity(wPhaseIdx, isIndexJ, velocityW);
+        cellDataJ.fluxData().addVelocity(nPhaseIdx, isIndexJ, velocityNw);
+        cellDataJ.fluxData().setVelocityMarker(isIndexJ);
     }
 
     return;