If all you need is direct pixel manipulation, then a pixel buffer and Texture::update is all you need. I see no reason why this would be a problem, you only have to update the texture when the user paints something, it won't happen 60 times per second (and even if it would, Texture::update can do it).
If you need more complex drawing tools, like sprites, shapes, etc. then simply use a sf::RenderTexture.