It took 3 days of work, but I got it working quite well. So what was the problem?
After checking, double checking, and triple checking my code, I finally found the error.
Here was the code I used for the platform collision, which checks if a point is inside a bounding box:
bool Inside(int x, int y, SDL_Rect rect)
if(x >= rect.x && x <= rect.x + rect.h && y >= rect.y && y <= rect.y + rect.h)
Yeah, spot the error.