The short of it is that Funimation's video player is completely borked.
Here's the long of it: it has to do with 1.) differences in how televisions and computers handle RGB color; and 2.) Funimation being incompetent.
What's the RGB color model?
In the (8-bit) RGB color model, colors are represented as a 3-tuple of numbers ranging from 0 to 255, which represent the amount of red, green, and blue in the color. For example, (0, 0, 0) represents no red, green, or blue, and is thus black; (255, 0, 0) is 100% red, no green, no blue, and is thus a maximally-red red. (65, 105, 225) is a nice shade of royal blue.
Now, here's the thing: on a computer, your colors can have all three values in that 3-tuple be anywhere from 0 to 255, and your monitor will happily display whatever color that is. This is referred to as "RGB Full", or "0-255".
But on a television, your colors are expected to have all three values range from 16 to 235. Any values higher than 235 are treated as pure white (for that component of the 3-tuple); any values less than 16 are treated as pure black. This reduces the dynamic range of your video a little bit, but this doesn't really make too much of a difference. This scheme is referred to as "RGB Limited", or "16-235". This page has a nice overview of the subject: RGB: Full vs. Limited.
How does this impact anime?
So when anime airs in Japan, the broadcasters receive video that uses RGB Limited, and then they broadcast it to homes in Japan, who watch their anime on TVs that expect RGB Limited, and all is well, since the color range used by the broadcaster matches the color range expected by the receivers.
When a competent streamer like Crunchyroll receives RGB Limited video from the studios in Japan, they re-encode the video to use RGB Full, and then stream it to their client-side video players, which expect video that uses RGB Full. All is well, since the color range which Crunchyroll's video uses is the same as the color range that the Crunchyroll player expects.
Alas, Funimation is not competent. While I'm not privy to the internal workings of Funimation, the behavior their player exhibits is fully compatible with the following sequence of steps:
- Funimation receives RGB Limited video from the studios in Japan (just like Crunchyroll does).
- Funimation re-encodes their video to use RGB Full.
- Funimation streams video in RGB Full to their client-side video players.
- The Funimation video player is broken in some way that makes it think that the video it's receiving is still in RGB Limited, and thus converts any colors below 16 or above 235 to black or white, respectively.
What does this mean for the viewer?
Consider a dark scene, like the Arslan Senki one mentioned in the question.
- When Funimation receives it from the broadcaster, there might be a lot of dark grays - let's say those are RGB (24, 24, 24), in RGB Limited [remember: in RGB Limited, (15, 15, 15) is 100% black].
- Then, Funimation re-encodes to RGB Full, meaning that we have to scale the 16-235 range up to 0-255. This converts our (24, 24, 24) gray to roughly (9, 9, 9) gray.
- When Funimation's video player receives the re-encoded video, it treats it as being in RGB Limited, and hence displays the (9, 9, 9) [which would be gray in RGB Full] as black.
See what happens? Dark colors get further desaturated to the point where they're pretty much just plain black. And on the other end of the spectrum, light colors get oversaturated, by the same mechanism.
And now you know.