diff --git a/pycardium/modules/sys_display.c b/pycardium/modules/sys_display.c
index fa416dc66cb6f45e43828a89246f1c3408faab64..eedeb705e12531d3ddf46a153abafbe8adebca0a 100644
--- a/pycardium/modules/sys_display.c
+++ b/pycardium/modules/sys_display.c
@@ -119,7 +119,7 @@ static mp_obj_t mp_display_blit(size_t n_args, const mp_obj_t *args)
 		mp_raise_ValueError("'img' is too small.");
 	}
 
-	uint16_t *buf;
+	uint16_t *buf = NULL;
 	if (rgb565) {
 		buf = (uint16_t *)img.buf;
 	} else {
@@ -150,6 +150,10 @@ static mp_obj_t mp_display_blit(size_t n_args, const mp_obj_t *args)
 		res = epic_disp_blit(pos_x, pos_y, width, height, buf, NULL);
 	}
 
+	if (buf) {
+		m_free(buf);
+	}
+
 	if (res < 0) {
 		mp_raise_OSError(-res);
 	}