Hyborem's whisper seems to be bit broken currently. City does not get "converted" properly and unhappiness remains.
As a workaround, I "fixed" this by changing parameters for pPlayer.AcquireCity from "x, False, True" to "x, False, False" in CvSpellInterface for both "spellHyboremsWhisper" and...