OK, I kept having this problem too, and I finally found a way around it.
The image looks fine before I upload it, and in the crop dialogue box, but when I set it, these ugly compression artefacts appear (especially around my glasses). I uploaded an image to show you here but apparently I don't have the permissions, so you don't get to see what I mean; sorry. Maybe try this link?
I noticed that canvas automatically scales your image to 128x128px in most places. So, I manually cropped my photo to a square shape and resized it to 128x128px locally before upload. Then it looks OK. This suggests that the compression algorithm used on Canvas is the cause of the problem.
Now, of course, I have a tiny profile picture, so if there is anywhere it is displayed larger than 128x128 it's going to look awful. But it's usually this thumb, so it should be OK.
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.