If the image looks better in the same terminal outside vifm, then this is probably a result of limited number of color pairs. curses library (except for some recent versions, which do it in backwards incompatible way, I think) limits how many foreground-background pairs it can handle for historical reasons. And vifm can't work around it except for supporting newer curses API, which might lift this limitation on systems where it's available. Currently that API isn't supported.
UPDATE: the limit is at most 256 color pairs unless ncurses is configured with --enable-ext-colors
, which is on by default since ncurses6, but is present since ncurses5.5. It looks like support for it can be added with some code change.