Probable cause of your problem is your display ICC color profile or using wide-gamut monitor. You can check what profile you are using in your OS settings (I won't go into specifics because it's system dependant).
Blender does not respect your monitor profile, nor profiles embedded in image files. When you prepare image in Blender viewport you look at it in your display color space but Blender saves it with regular sRGB. It also happens when you use wide-gamut monitor which can display more colors than sRGB color space has. For example (not factual) 0.8 srgb red might look like 1.0 srgb red on such screen, so when you open it in a program that can actually handle profiles it will look like 0.8 srgb and not Blender's over-saturated red.
If you use wide-gamut monitor with default sRGB profile you may want to at least find the profile delivered by its manufacturer, though propper color calibration is the best.
When you know the path to your ICC/ICM profile, you can embed it into your image so other programs will know that your 0.8 red should be displayed as 1.0 red. You can also convert it to the sRGB space, though you'll loose colors displayable with wide-gamut screen.
You can use other graphical packages to manage color profiles (like Photoshop, probably Krita and Gimp, though I didn't have much luck...), ImageMagick or a Python script with PIL (PNG and JPEG only).
In Python it is fairly easy.
To attach profile:
from PIL import Image, ImageCms
img = Image.open(image_filepath)
display_profile = ImageCms.getOpenProfile(display_profile_path)
img.save(filepath, icc_profile=display_profile.tobytes())
To convert:
img = Image.open(image_filepath)
display_profile = ImageCms.getOpenProfile(display_profile_path)
srgb_profile = ImageCms.getOpenProfile(rgb_profile_path)
ImageCms.profileToProfile(img, display_profile, srgb_profile, inPlace=True)
img.save(filepath, icc_profile=display_profile.tobytes())
If you want Blender to handle it all for convenience sake, use Styriam ICC Image Compressor addon. It can embed/convert profiles in stills and animation frames.