float y_shapeBottom = m_shape->getPosition().y - (m_shape->getSize() / 2);
float y_shapeTop = m_shape->getPosition().y + (m_shape->getSize() / 2);
The + and - signs are reversed because the window's initial coordinate is in the upper-left corner. Corrected code:
float y_shapeBottom = m_shape->getPosition().y + (m_shape->getSize() / 2);
float y_shapeTop = m_shape->getPosition().y - (m_shape->getSize() / 2);