можно предположить, что твоя вотерка рендерится так, как надо. мы видим, что в string watermark нужный текст передается только при условии, что ты находишься в игре, скорее всего что если это условие не выполняется, у тебя строка пустая, соответственно, вычисление box_width неверное(ну как неверное, оно как бы верное, но из-за того что у тебя текста нету оно будет как бы неправильным(маленьким)), из-за этого у тебя и такая маленькая вотерка, текста же нет. Чтоб это исправить можешь заранее в watermark передавать нужный текст, который должен показываться вне геймплея, либо показывать вотерку только когда engine->in_game() true