In fact, it looks like it should give the right shade, minus the small variations for arithmetic rounding errors.
This is certainly reasonable, it was just to achieve the effect of watermarks. I do not know other "standard" ones, there are several ways to do this.
Alternatives:
Mix with white, but do it non-linearly at F, for example. new_c = c + sqrt(F)*(1-c), or you can use other non-linear functions - this can help the watermark look more or less "flat."
You could do this more efficiently by doing the following (where F takes a range of 0..INF):
new_c = 1 - (1-c)/pow(2, F)
for real pixel values (0..255) this translates to:
new_c = 255 - (255-c)>>F
, , 32b- .