Столкнувшись с тем, что ни одна программа не позволяет мне поправить кривую именно так как я хочу - написал простую утилитку, которая распаковывает vcgt в таблицу, таблицу мы удобно редактируем в табличном редакторе, и той же утилиткой запаковываем обратно в vcgt.
Остается решить, как распаковать сам профиль ICC и как запаковать его обратно с отредактированным тегом vcgt.
Для распаковки профиля можно использовать чудесную бесплатную утилиту IccXML. Также ее можно скачать тут со страницы iccMax. Созданный ею файл xml из профиля открываем в любом удобном вам редакторе, я открывал в Adobe Dreamweaver. Находим поиском vcgt, копируем все содержимое этого тега в эдитор https://cielab.xyz/vcgt.php и создаем простую понятную таблицу для редактирования в любом привычном вам табличном редакторе, просто через буфер тянем размеченную табуляторами таблицу копипастом.
Рисуем какие мы хотим кривые в тенях, обратно копипастом тянем в vcgt editor и упаковываем в тег.
Важное и полезное дополнение: iccMax прекрасно умеет запаковывать обратно из XML в icc профили монитора. То есть вообще шикарно, и никакой возни с hex не нужно.
Чуть подробнее о конвертациях из icc в XML и обратно было по ссылке.
По какой-то причине IccXML пока не умеет корректно упаковать в ICC-профиль тег vcgt, с другими профилями хорошо справляется, а с мониторами что-то не дружит. Берем любой HEX-редактор, их полно в сети, я взял первый подвернувшийся Hex Editor Neo, открываем профиль в нем, осваиваемся первый раз минут 10, находим блок данных vcgt, отмечаем себе начало и конец этого блока, подменяем его на свой (удаляем имеющийся и вставляем свой прямо из буфера). Проверяем что нет сдвига (offset) и начало и конец нашего блока vcgt находится на тех же по порядку байтах.
Потом можем тут же в hex-редакторе поправить тег desc, чтобы имя нашего нового профиля в системе отличалось от оригинального и они не конфликтовали друг с другом (имя файла для профиля - это не все, система смотрит имя по тегу desc внутри профиля). Достаточно поменять всего один символ, а вот добавлять или вырезать не стоит символы, все сдвинется в байтах и не будет работать, в профиле каждый байт на своем месте и начало и конец каждого тега прописаны в заголовке профиля.
Ну и все собственно, сохраняем профиль в новый файл с именем желательно как прописано в desc чтобы не путаться самому. Проверяем - все работает, кривые в видеокарту грузятся. Для проверки на Mac вообще ничего делать не надо, при выборе профиля в свойствах цвета монитора Mac сам загружает кривые vcgt в видеокарту. Для Windows есть полезная утилитка DisplayProfile от GretagMacbeth, загружающая кривые профиля в видеокарту без перезагрузки компьютера и автоматом назначающая профиль по умолчанию для системы, и дополнение к ней CalibrationTester, показывающая как раз кривые vcgt, загруженные в видеокарту.
На скриншотах кривые vcgt до и после редактирования, графики из Excel (прилагается) и те же графики в исправленном профиле в отображении программы basICColor. Сам поправить нормально не умеет, но тоже показывает, что у нас сейчас в видеокарте за кривые. Бесплатный Argyll SMS кривые vcgt показывает, но не позволяет поправить; профили 4 версии не показывает и не правит, естественно.
Проблема неверного оттенка черной точки при калибровке монитора не частная, а общая, поэтому пусть будет утилита для продвинутого калибровщика:
https://cielab.xyz/vcgt.php • VCGT editor • free, online, open source