instead of add 4/subtract 4 from sway, try doing something like, add/subtract 10 * timedelta
instead of adding/subtracting 4 per tick which is what you're currently doing, it will instead add/subtract 10 per second, making it frame rate independant
The basic rule i use about timedelta is, if you put a *timedelta after a value, that value becomes 'per second'
if i didn't quite understand your code, just put a '* timdelta' next to the value that is being used to change the angle, you may need to increase the value a bit though as it is no longer units per tick but units per second
'.X + 200 * timedelta' moves along the X axis at 200 pixels per second
'.angle + 360 * timedelta' makes the sprite do a full 360 turn in one second
i hope that is of some help