I missed it the first time but after reading your code again I noticed you did not specify the CompositeOperator. The default is In but you need Over:
img.Composite(backgroundOfWaterMark, 0, img.Height - 20, CompositeOperator.Over);