я думаю, здесь используется как раз эта хрень из статьи в хабре. Браузеру отдается изображение, которое загрузил пользователь, со всеми особенностями. А превью показывает другое, потому что обработчик, который создает саму превью-картинку, не учитывает гамма-коррекцию.