diff --git a/src/operator/AddImpl.cpp b/src/operator/AddImpl.cpp
index 92c9ee59d48ed8606192c83f346a76792dcd3eeb..7355ebcb3e8fb68bf74dbd1ce831bf471d285cb7 100644
--- a/src/operator/AddImpl.cpp
+++ b/src/operator/AddImpl.cpp
@@ -68,7 +68,8 @@ void  Aidge::AddImpl_cpu::forward() {
 			inputDims[idx] = dims[j];
 		}
         inputsDims.push_back(inputDims);
-        opInputs.push_back(getCPUPtr(mOp.getRawInput(i)));
+        const auto& input = std::static_pointer_cast<Tensor>(mOp.getRawInput(i))->refCastFrom(inputsFallback[i], *std::static_pointer_cast<Tensor>(mOp.getRawOutput(0)));
+        opInputs.push_back(input.getImpl()->rawPtr());
     }
 
     kernelFunc(opInputs,