diff --git a/py/emitnative.c b/py/emitnative.c
index 423b1684b6405e6e2d153cdc1b6852299debb208..85eb891d4ab46c71a0bf764b124ce7a2e7c2389a 100644
--- a/py/emitnative.c
+++ b/py/emitnative.c
@@ -1125,7 +1125,7 @@ STATIC void emit_native_load_const_small_int(emit_t *emit, mp_int_t arg) {
     if (emit->do_viper_types) {
         emit_post_push_imm(emit, VTYPE_INT, arg);
     } else {
-        emit_post_push_imm(emit, VTYPE_PYOBJ, (arg << 1) | 1);
+        emit_post_push_imm(emit, VTYPE_PYOBJ, (mp_uint_t)MP_OBJ_NEW_SMALL_INT(arg));
     }
 }