Чтобы сгладить градиент нужно разнести точки перехода цветов. Не 50% и 50%, а, например, 49% и 50%. Для некоторых углов эта разница должна быть поменьше, для других побольше. Подберите.
Берёшь before делаешь его белый, позиционируешь, поворачиваешь его немного с помощью transform translate() и двигаешь его left, top, чтобы слегка наложить сверху, родителю задай position relative, думаю ты понял идею