Hey there, welcome! There was a discussion about this topic recently here: Downscaling quality with SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "best");
The problem is that most, if not all, render back-ends will sample from 4 pixels to determine pixel color, so when you scale below 50%, there are not enough pixels to make a correct color. A custom solution would be to make some mipmaps yourself, having your textures in different resolutions and choosing the most adequate according to the scale.
Again, i recommend checking the post above for the solutions.