I have InProgress.png in my Site Assets documents library (SharePoint 2013). I want to replace it by new version of this picture with this same name (it's important because my workflows are using this picture and if I change it's name workflows will not find it). I tried to upload new version to Site Assets by checking Overwrite existing file option. SharePoint uploads file but didn't change a picture (there was new date in Created field but picture was old). Then I deleted old picture, uploaded new one (called InProgress.png), SharePoint done it but picture didn't change again. Then I uploaded new picture with different name (InProgress2.png). In this case SharePoint correct recognized my new picture, so I deleted old one and changed name of new one to InProgress.png. But after that, without uploading anything picture returned to old state.
It seems that SharePoint can read my InProgress.png picture only in one way. Maybe SharePoint is holding this file and it's name somewhere in memory and do not allow to overwrite it?
It sounds like a caching issue, where the InProgress.png is
saved to either the browser's cache and just shows incorrectly, or
SharePoint's BLOB cache still refers to the older image (which probably technically still exists e.g. in the thrash bin, and at least in the cache),
or both of the mentioned scenarios happen.
With having your new InProgress.png added, try to access the picture with another browser and see if it shows up correctly. Also if possible, ask another user to check how the image shows up for them. Finally you can try to clear your browser's cache, restart the browser and see does the image show up with the new image. If in each of these cases the image still shows up as the old one, it's likely because the data is still referenced from the SharePoint's cache. The SP's BLOB cache can be flushed as instructed here, but I'd advice to not flush it, and instead wait it be fixed by time.