diff --git a/src/backend/OperatorImpl.cpp b/src/backend/OperatorImpl.cpp
index 8a4924c0e3e6c8f0e6625232451a4267c5d9b318..5c25ad6056c054b8e757fd942d8f77ccebbf0741 100644
--- a/src/backend/OperatorImpl.cpp
+++ b/src/backend/OperatorImpl.cpp
@@ -235,6 +235,11 @@ bool Aidge::OperatorImpl::checkIOSpec(const ImplSpec::IOSpec& required, const Im
 }
 
 std::shared_ptr<Aidge::Node> Aidge::OperatorImpl::getAdaptation(const ImplSpec& spec, const ImplSpec& requiredSpecs) const {
+    // Original graph is:
+    //                               --> {required IO specs} [node] {required IO specs} -->
+    // Obtained meta-op is:
+    // --> {required IO specs} [adapt inputs] --> {IO specs} [node] {IO specs} --> [adapt outputs] {required IO specs}
+
     auto op = std::static_pointer_cast<OperatorTensor>(mOp.clone());
     auto node = std::make_shared<Node>(op);
 
@@ -306,7 +311,7 @@ std::shared_ptr<Aidge::Node> Aidge::OperatorImpl::getAdaptation(const ImplSpec&
             cast->getOperator()->setBackend(node->getOperator()->backend());
             parent->addChild(cast, i, 0);
 
-            op->getOutput(i)->setDataType(IOSpec.type);
+            op->getInput(i)->setDataType(IOSpec.type);
         }
 
         // Output format
@@ -321,7 +326,7 @@ std::shared_ptr<Aidge::Node> Aidge::OperatorImpl::getAdaptation(const ImplSpec&
             transposeOp->getOperator()->setBackend(node->getOperator()->backend());
             parent->addChild(transposeOp, i, 0);
 
-            op->getOutput(i)->setDataFormat(IOSpec.format);
+            op->getInput(i)->setDataFormat(IOSpec.format);
         }
 
         // Output dims