Each tile in my tileset texture is 48x48 and the same on screen, so the 1:1 mapping shouldn't be the problem.
The tilemap is never moved, only the view is moved and each tile on startup is given and integer position and size (although casted to a float to work with sf::Vertex)
The code below is what I'm using to draw the tilemap.
void draw()
{
sf::View view = window->getView();
float cx = view.getCenter().x;
float cy = view.getCenter().y;
float x = cx - window->getSize().x / 2;
float y = cy - window->getSize().y / 2;
cx = std::floor(cx);
cy = std::floor(cy);
view.setCenter(cx, cy);
rTexture.setView(view);
rTexture.clear(sf::Color::Transparent);
rTexture.draw(*map);
rTexture.display();
const sf::Texture& texture = rTexture.getTexture();
// draw it to the window
sf::Sprite sprite(texture);
sprite.setPosition(x ,y);
window->draw(sprite);
}