Well think about it for a second and you'll realize that if it worked at all in Preview 2, it was very lucky, and probably fragile. Remember that the HttpContext itself is created once per request by ASP.NET. With the TempDataProvider, you are passing a reference to the HttpContext.Current in request #1. Now request #2 comes along to the same controller instance that you have scoped to the application, but it's still pointing to the same TempDataProvider (and thus the same HttpContext instance) from request #1, which is no longer valid.
If you want to have your controller application scoped, you have to make sure that all its dependencies are repopulated on every request. The lifecycle of your controller is now a mismatch with the lifecycle of its dependencies. This is not a flaw in Preview 4, this is just the way that ASP.NET works.