I had a couple of VMs that wouldn't poweroff nicely when I was sending the poweroff command in virsh or using the power button in virt-manager.

I discovered today that checking that acpid is running and that a script called button (or what ever but without a .conf suffix) was sufficient to fix this issue.

event=button[ /]power
action=/sbin/shutdown -h now

Hope this will help others.