protected UINode selectionAt(Vec2D mousePos) {
    if (super.selectionAt(mousePos) == null) return null ;
    if (selectMode == MODE_BOUNDS) {
      return this ;
    }
    if (selectMode == MODE_RADIUS) {
      final float radius = Math.max(bounds.xdim(), bounds.ydim()) / 2 ;
      return (bounds.centre().pointDist(mousePos) < radius) ? this : null ;
    }
    if (selectMode == MODE_ALPHA) {
      final float
        tU = ((mousePos.x - bounds.xpos()) / bounds.xdim()),
        tV = ((mousePos.y - bounds.ypos()) / bounds.ydim()) ;
      final Colour texSample = texture.getColour(tU, tV) ;
      return (texSample.a > 0.5f) ? this : null ;
    }
    return null ;
  }