@Molfo The score difference impacting the ELO change is a good point!!
Since unlike Chess, we have an objective measure of "how close" the match is.
It's especially true in four players games, for example if the scores are 130 167 168 200, the impact of player 2 "losing" to player 3 should be lessened.
The higher precision also can make people reaching their target ELO faster, which is important with games like GP that last a long time.
The new formula can be something like: K x (W - p(D)) x S(|δ|), where δ is the score difference between two players and S is a sigmoid function that for an average δ returns 1.
Edit:
Thinking about it,changing W makes much more sense.
Something like: K * (W(δ) - p(D))
An example function W(x) = 0.5 + 0.5 * sgn(x) * sqrt(|x| / μ), where μ is the average score difference between players (μ would change depending on if we are in a 2, 3 or 4 player game).
An interesting side effect in that scenario is that if a high ELO player wins against a much lower ELO player and the score difference is very small, the high ELO player would actually lose a few points, and the low ELO player would win a few points.