О! Я над таким мучался, долго... Придумал такую структуру:
1. Блоку с текстом задал ширину по сетке, как в макете. Задал максимальный маржин слева, чтоб блок был всегда справа. Слева остается пустота.
2. Блоку с текстом задал position relative.
3. Создал псевдоэлемент ::before{
content: '';
display: block;
position: absolute;
top: 0;
bottom: 0;
right: -100%;
background: transparent url(img/bg.png) no-repeat top;
background-size: cover;
}
Псевдоэлемент растянут по высоте на высоту родителя, вынесен влево полностью на 100% от родителя, то есть из родителя на всю катушку, далее просто задал картинку фоном, и там только позиционировать ее надо будет, а может и не надо, еще поиграться свойствами background-size, и все. Иногда бывали такие моменты, что на пару пикселей края не совпадали, это из-за бордеров может быть или маржины/паддинги какие-то, инспектором смотрите и потом двигаете псевдоблок но не через top/left... а margin-top +/-, margin-left+/- на величину этого самого бордера или маржина.