The code block "if on edge, bounce" is very useful and convenient, but it may cause problems if you don't understand how it works. ☛ Click the code blocks and see the result. ☛ Click the green flag to reset.
You might think that the "if on edge, bounce" block makes the sprite bounce away in a different direction, but what it actually does is that it moves the sprite away from the edge until it no longer touches it, and then mirrors the direction. If you want to make a sprite bounce off the edge mid-movement, you'll have to make a custom block with the "Run without screen refresh" option checked. Look inside to see my take on it. ℹ️ To accentuate the problem, I have used a somewhat large sprite, and I am moving it very far (200 steps) each frame. It is much less noticeable if the sprite is smaller and it moves just a few steps each frame.