Собственно заметил интересный баг.
В QTreeWidget mapToGlobal возвращает неверные координаты. Проблема в том, что данная функция не учитывает высоту HeaderView.
Гугление не дало ответа кроме "да бывало", проверка в версии 5.5 так же выявила эту проблему (т.е. актуальность версиям Qt 4.7-5.5).
Решение - самостоятельно добавлять высоту headerView в зависимости от их видимости.
void regEdit::on_treeWidget_customContextMenuRequested(const QPoint & pos)
{
QPoint gPos = ui.treeWidget->mapToGlobal( pos);
menu.exec(QPoint(gPos.x(), ui.treeWidget->isHeaderHidden()?gPos.y():(gPos.y() + ui.treeWidget->header()->height())));
}