I confirm that the SET DATEFORMAT will indeed change the behavior, though I got with your code at least 1 row back (the <= getdate()).
playing around with dateformat made some differences, but the solution, to return expected results, was to indeed replace:
GETDATE()
by
CAST(GETDATE() AS SMALLDATETIME)
and you get results in any settings.