|  | @@ -566,32 +566,35 @@ export class GraphicalSlur extends GraphicalCurve {
 | 
	
		
			
				|  |  |          const startStaffEntry: GraphicalStaffEntry = this.staffEntries[0];
 | 
	
		
			
				|  |  |          const endStaffEntry: GraphicalStaffEntry = this.staffEntries[this.staffEntries.length - 1];
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // Deactivated: single Voice, opposite to StemDirection
 | 
	
		
			
				|  |  | -        // if (startStaffEntry.hasStem() && endStaffEntry.hasStem() && startStaffEntry.getStemDirection() === endStaffEntry.getStemDirection()) {
 | 
	
		
			
				|  |  | -        //     this.placement = (startStaffEntry.getStemDirection() === StemDirectionType.Up) ? PlacementEnum.Below : PlacementEnum.Above;
 | 
	
		
			
				|  |  | -        // } else {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // Placement at the side with the minimum border
 | 
	
		
			
				|  |  | -        let sX: number = startStaffEntry.PositionAndShape.BorderLeft + startStaffEntry.PositionAndShape.RelativePosition.x
 | 
	
		
			
				|  |  | -                    + startStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | -        let eX: number = endStaffEntry.PositionAndShape.BorderRight + endStaffEntry.PositionAndShape.RelativePosition.x
 | 
	
		
			
				|  |  | -                    + endStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if (this.graceStart) {
 | 
	
		
			
				|  |  | -            sX += endStaffEntry.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        if (this.graceEnd) {
 | 
	
		
			
				|  |  | -            eX += endStaffEntry.staffEntryParent.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        // single Voice, opposite to StemDirection
 | 
	
		
			
				|  |  | +        // here should only be one voiceEntry, so we can take graphicalVoiceEntries[0]:
 | 
	
		
			
				|  |  | +        const startStemDirection: StemDirectionType = startStaffEntry.graphicalVoiceEntries[0].parentVoiceEntry.StemDirection;
 | 
	
		
			
				|  |  | +        const endStemDirection: StemDirectionType = endStaffEntry.graphicalVoiceEntries[0].parentVoiceEntry.StemDirection;
 | 
	
		
			
				|  |  | +        if (startStemDirection  ===
 | 
	
		
			
				|  |  | +            endStemDirection) {
 | 
	
		
			
				|  |  | +            this.placement = (startStemDirection === StemDirectionType.Up) ? PlacementEnum.Below : PlacementEnum.Above;
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            // Placement at the side with the minimum border
 | 
	
		
			
				|  |  | +            let sX: number = startStaffEntry.PositionAndShape.BorderLeft + startStaffEntry.PositionAndShape.RelativePosition.x
 | 
	
		
			
				|  |  | +                        + startStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | +            let eX: number = endStaffEntry.PositionAndShape.BorderRight + endStaffEntry.PositionAndShape.RelativePosition.x
 | 
	
		
			
				|  |  | +                        + endStaffEntry.parentMeasure.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (this.graceStart) {
 | 
	
		
			
				|  |  | +                sX += endStaffEntry.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (this.graceEnd) {
 | 
	
		
			
				|  |  | +                eX += endStaffEntry.staffEntryParent.PositionAndShape.RelativePosition.x;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // get SkyBottomLine borders
 | 
	
		
			
				|  |  | -        const minAbove: number = skyBottomLineCalculator.getSkyLineMinInRange(sX, eX) * -1;
 | 
	
		
			
				|  |  | -        const maxBelow: number = skyBottomLineCalculator.getBottomLineMaxInRange(sX, eX) - staffLine.StaffHeight;
 | 
	
		
			
				|  |  | +            // get SkyBottomLine borders
 | 
	
		
			
				|  |  | +            const minAbove: number = skyBottomLineCalculator.getSkyLineMinInRange(sX, eX) * -1;
 | 
	
		
			
				|  |  | +            const maxBelow: number = skyBottomLineCalculator.getBottomLineMaxInRange(sX, eX) - staffLine.StaffHeight;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        if (maxBelow > minAbove) {
 | 
	
		
			
				|  |  | -            this.placement = PlacementEnum.Above;
 | 
	
		
			
				|  |  | -        } else { this.placement = PlacementEnum.Below; }
 | 
	
		
			
				|  |  | -        //}
 | 
	
		
			
				|  |  | +            if (maxBelow > minAbove) {
 | 
	
		
			
				|  |  | +                this.placement = PlacementEnum.Above;
 | 
	
		
			
				|  |  | +            } else { this.placement = PlacementEnum.Below; }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 |