diff --git a/scripts/mbedtls_dev/bignum_mod_raw.py b/scripts/mbedtls_dev/bignum_mod_raw.py
index 29e3339..296e2d2 100644
--- a/scripts/mbedtls_dev/bignum_mod_raw.py
+++ b/scripts/mbedtls_dev/bignum_mod_raw.py
@@ -60,14 +60,14 @@
     arity = 2
 
     def arguments(self) -> List[str]:
-        return [bignum_common.quote_str(n) for n in [self.arg_a,
-                                                     self.arg_b,
-                                                     self.arg_n]
+        return [self.format_result(self.to_montgomery(self.int_a)),
+                self.format_result(self.to_montgomery(self.int_b)),
+                bignum_common.quote_str(self.arg_n)
                ] + self.result()
 
     def result(self) -> List[str]:
         result = (self.int_a * self.int_b) % self.int_n
-        return [self.format_result(result)]
+        return [self.format_result(self.to_montgomery(result))]
 
 # END MERGE SLOT 2
 
diff --git a/tests/suites/test_suite_bignum_mod_raw.function b/tests/suites/test_suite_bignum_mod_raw.function
index cf8643d..b1d1f77 100644
--- a/tests/suites/test_suite_bignum_mod_raw.function
+++ b/tests/suites/test_suite_bignum_mod_raw.function
@@ -386,37 +386,28 @@
     const size_t limbs_T = limbs * 2 + 1;
     ASSERT_ALLOC( T, limbs_T );
 
-    /* Convert to Montgomery representation */
-    TEST_EQUAL( mbedtls_mpi_mod_raw_to_mont_rep( A, &m ), 0 );
-    TEST_EQUAL( mbedtls_mpi_mod_raw_to_mont_rep( B, &m ), 0 );
-
     mbedtls_mpi_mod_raw_mul( X, A, B, &m, T );
-    TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
     ASSERT_COMPARE( X, bytes, R, bytes );
 
     /* alias X to A */
     memcpy( X, A, bytes );
     mbedtls_mpi_mod_raw_mul( X, X, B, &m, T );
-    TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
     ASSERT_COMPARE( X, bytes, R, bytes );
 
     /* alias X to B */
     memcpy( X, B, bytes );
     mbedtls_mpi_mod_raw_mul( X, A, X, &m, T );
-    TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
     ASSERT_COMPARE( X, bytes, R, bytes );
 
     /* A == B: alias A and B */
     if( memcmp( A, B, bytes ) == 0 )
     {
         mbedtls_mpi_mod_raw_mul( X, A, A, &m, T );
-        TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
         ASSERT_COMPARE( X, bytes, R, bytes );
 
         /* X, A, B all aliased together */
         memcpy( X, A, bytes );
         mbedtls_mpi_mod_raw_mul( X, X, X, &m, T );
-        TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
         ASSERT_COMPARE( X, bytes, R, bytes );
     }
 
@@ -424,19 +415,16 @@
     else
     {
         mbedtls_mpi_mod_raw_mul( X, B, A, &m, T );
-        TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
         ASSERT_COMPARE( X, bytes, R, bytes );
 
         /* B * A: alias X to A */
         memcpy( X, A, bytes );
         mbedtls_mpi_mod_raw_mul( X, B, X, &m, T );
-        TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
         ASSERT_COMPARE( X, bytes, R, bytes );
 
         /* B + A: alias X to B */
         memcpy( X, B, bytes );
         mbedtls_mpi_mod_raw_mul( X, X, A, &m, T );
-        TEST_EQUAL( mbedtls_mpi_mod_raw_from_mont_rep( X, &m ), 0 );
         ASSERT_COMPARE( X, bytes, R, bytes );
     }
 
