I guess that's the expected behavior, the color adding with sf::Color(0,0,0,1) will always have to let shine through something and at a certain point it just sticks to it.
You can demonstrate this also with the following code:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(1024, 768), "SFML");
window.setFramerateLimit(60);
sf::RenderTexture m_RenderTexture;
m_RenderTexture.create(window.getSize().x, window.getSize().y);
sf::Sprite m_RenderSprite;
sf::RectangleShape FadeRect(sf::Vector2f(window.getSize()));
FadeRect.setFillColor(sf::Color(0, 0, 0, 1));
sf::CircleShape circle;
circle.setRadius(10);
circle.setFillColor(sf::Color::Red);
m_RenderSprite.setTexture(m_RenderTexture.getTexture());
m_RenderTexture.draw(circle);
m_RenderTexture.display();
for(unsigned int i = 0; i < 1000; ++i)
{
m_RenderTexture.draw(FadeRect);
m_RenderTexture.display();
}
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
circle.setPosition(sf::Vector2f(sf::Mouse::getPosition(window)));
window.clear();
window.draw(m_RenderSprite);
window.display();
}
}
You can now set the number in the for-loop to any value you want, but the circle will never disappear.
I'm not that good at color modification stuff, so it maybe possible with the way you were doing it, but I don't know and I'd try to find another method.