I've been rolling over my shorts for quite a while with no issues now, so here are a few tips:
1. If you're setting a price limit on your short intending to buy at that exact price, then don't set the quantity. Instead, manually enter the collateral amount as 2*price limit*desired quantity. The quantity will display the amount this would collateralize at the current feed, but ignore that. You can just buy the desired quantity at the price limit you set from your short and the orders will fill each other properly.
2. Expired shorts force a buy order at exactly the feed. Margin called shorts force a buy at 10% above the feed. You can see these two orders in the screenshots posted in this thread with their prices in yellow instead of green: The buy at 205 is the expired short order and the buy at 225 is the margin call order.
3. I don't know how much difference it makes, but I always increase my desired number of connections to 45 instead of 20 to try and minimize my latency on receiving new blocks and seeing new orders sooner.
The GUI is sometimes a little weird with my orders showing and hiding as they're in the process of being matched with each other, but if I ignore that it seems to work fine, and the GUI catches up with what actually happened soon after. The new graphene system should resolve this sort of GUI issue since it pushes updates to the GUI instead of the GUI constantly checking for updated data.