I'm sorry, problem was with my modified collision code.
It works fine if I comment out this line:
if tilemap_get_at_pixel(global.map, bbox_left, bbox_top - 1) == VOID y -= 1;
Perhaps I had the problem because I don't use decimals.
I modified the collision code so it works nice without decimals so I get smooth movement.