It's just an encoding issue - don't try to hash the hex, hash the binary.
For example, here is the hash computation when you decode the hex into binary (using Haskell since I have it handy):
Prelude> import Crypto.Hash.SHA256
Prelude Crypto.Hash.SHA256> let str = "0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6"
Prelude Crypto.Hash.SHA256> Data.ByteString.Base16.encode $ hash $ fst $ Data.ByteString.Base16.decode $ Data.ByteString.Char8.pack str
"600ffe422b4e00731a59557a5cca46cc183944191006324a447bdb2d98d4b408"