Проблема не имеет ничего общего с PIL. Проблема в том, что фон - это .png, и вы его составляете, а затем выводите в виде .jpg.
.png без потерь, очень хорош для синтетических изображений, таких как фон. .jpg с потерями, очень хорошо для естественных изображений, таких как фотографии. Когда вы выводите свой фон в виде .jpg, он будет содержать артефакты сжатия, которые вы называете «пятна».
Выведите окончательное изображение в формате .png. Это будет больше байтов, чем .jpg, но будет выглядеть лучше.