Let's keep the hate aside and forget MS's past. The biggest problem facing MS now is the loss of mind share on the Windows platform. The brightest minds aren't programming on Microsoft platforms if you look at colleges and conferences worldwide. This cannot be reversed; Open Source products are now technically superior, the community is very well organized, and it is free. Interesting research, frameworks, libraries and programming languages spawn on Open Source before they show up (if ever) on Windows. Windows engines have run out; though they will keep going for a while.
MS had a great run for over twenty years because the entire world ran on DOS and then Windows. That gave them enormous influence and power, power to make mistakes, fail over and over, and yet succeed. The real challenge will be in adapting to a future in which Windows is irrelevant. The long-term future of Azure, Windows Phone, Windows Desktop, Windows Server and their overpriced Office Tools looks bleak to me.