Sorry if I'm out of topic, I've read this discussion very quickly, but if it's just a problem with the viewport's scale factors, then all you have to do is to compute them from integer pixel values instead of using arbitrary decimal numbers.
float viewportWidth = some_integer_value / window.getSize().x;
// same for left, top and height...
And if you really need to define them with scale factors instead of pixel sizes, then adjust them so that multiplied by the window size it makes an integer.
float viewportWidth = static_cast<unsigned int>(some_scale_factor * window.getSize().x) / window.getSize().x;
(you may have to adjust the rounding method when converting from float to integer to get correct results)
Woah, guys, i made it. Such a trivial edit, lol.
upperPanel.setViewport({0, 0, 0.75f, 0.025f}); //Set panels ratios.
mainPanel.setViewport ({0, 0.025f, 0.75f, 0.975f});
rightPanel.setViewport({0.75f, 0, 0.25f, 1});
Method for setting size of panel (view). Fix is to std::floor calculation result
void OperatingSystem::adjustPanel(const sf::RenderWindow& win, sf::View& view)
{
view.reset({0.f, 0.f,
std::floor(win.getSize().x * view.getViewport().width), //std::floor it!
std::floor(win.getSize().y * view.getViewport().height)}); //this too
}