Program: 58329
Project: 58329
Buggy source:
public void drawNode(PoincareNode node,int mode){
  float[] size=new float[2];
  if (node != this.getCenteredNode()) {
    size=getMetric(node.getPosition(),nodeSize);
  }
  int iPickingID=pickingManager.getPickingID(iUniqueID,EPickingType.DATAW_NODE,node.iComparableValue);
  gl.glPushName(iPickingID);
  if (distanceToDetaillevel(node.getDistanceFromOrigin()) == 2) {
    float alpha=1;
    if (node.markedToRemove == true) {
      alpha=0.7f;
    }
    size[0]=size[0] * 4;
    size[1]=size[1] * 4;
    Vec3f lowerLeftCorner=new Vec3f((-size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(-size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f lowerRightCorner=new Vec3f((size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(-size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f upperRightCorner=new Vec3f((size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f upperLeftCorner=new Vec3f((-size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f scalingPivot=new Vec3f(1,1,1);
    textureManager.renderGUITexture(gl,EIconTextures.PATHWAY_ICON,lowerLeftCorner,lowerRightCorner,upperRightCorner,upperLeftCorner,scalingPivot,1,1,1,alpha,0);
  }
 else {
    if (distanceToDetaillevel(node.getDistanceFromOrigin()) == 1) {
      if (node == this.getCenteredNode()) {
        size=this.findOptimalCenterNodeSize(node,0.001f);
      }
    }
    float[] position=new float[2];
    position[0]=-size[0] * canvasWidth / 2 + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2;
    position[1]=-size[1] * canvasHeight / 2 * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2;
    hyperbolic.drawRemoteView(gl,node,position,size[0]);
  }
  gl.glPopName();
}

Fixed version (ground truth):
public void drawNode(PoincareNode node,int mode){
  float[] size=new float[2];
  if (node != this.getCenteredNode()) {
    size=getMetric(node.getPosition(),nodeSize);
  }
  int iPickingID=pickingManager.getPickingID(iUniqueID,EPickingType.DATAW_NODE,node.iComparableValue);
  gl.glPushName(iPickingID);
  if (distanceToDetaillevel(node.getDistanceFromOrigin()) == 2) {
    node.eyeTrackable=false;
    float alpha=1;
    if (node.markedToRemove == true) {
      alpha=0.7f;
    }
    size[0]=size[0] * 4;
    size[1]=size[1] * 4;
    Vec3f lowerLeftCorner=new Vec3f((-size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(-size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f lowerRightCorner=new Vec3f((size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(-size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f upperRightCorner=new Vec3f((size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f upperLeftCorner=new Vec3f((-size[0] + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2),(size[1] * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2),0);
    Vec3f scalingPivot=new Vec3f(1,1,1);
    textureManager.renderGUITexture(gl,EIconTextures.PATHWAY_ICON,lowerLeftCorner,lowerRightCorner,upperRightCorner,upperLeftCorner,scalingPivot,1,1,1,alpha,0);
  }
 else {
    if (distanceToDetaillevel(node.getDistanceFromOrigin()) == 1) {
      if (node == this.getCenteredNode()) {
        size=this.findOptimalCenterNodeSize(node,0.001f);
      }
    }
    node.eyeTrackable=true;
    float[] position=new float[2];
    position[0]=-size[0] * canvasWidth / 2 + node.getZoomedPosition()[0] * displayScaleFactorX + canvasWidth / 2;
    position[1]=-size[1] * canvasHeight / 2 * (canvasHeight / canvasWidth) + node.getZoomedPosition()[1] * displayScaleFactorY + canvasHeight / 2;
    hyperbolic.drawRemoteView(gl,node,position,size[0]);
  }
  gl.glPopName();
}