diff --git a/packages/frontend/src/components/MkPullToRefresh.vue b/packages/frontend/src/components/MkPullToRefresh.vue
index 22ae563d13..38a8bea68e 100644
--- a/packages/frontend/src/components/MkPullToRefresh.vue
+++ b/packages/frontend/src/components/MkPullToRefresh.vue
@@ -39,7 +39,6 @@ const isPullEnd = ref(false);
 const isRefreshing = ref(false);
 const pullDistance = ref(0);
 
-let supportPointerDesktop = false;
 let startScreenY: number | null = null;
 
 const rootEl = useTemplateRef('rootEl');
@@ -58,10 +57,11 @@ const emit = defineEmits<{
 }>();
 
 function getScreenY(event) {
-	if (supportPointerDesktop) {
+	if (event.touches && event.touches[0] && event.touches[0].screenY != null) {
+		event.touches[0].screenY;
+	} else {
 		return event.screenY;
 	}
-	return event.touches[0].screenY;
 }
 
 function moveStart(event) {
@@ -129,7 +129,7 @@ function moveEnd() {
 function moving(event: TouchEvent | PointerEvent) {
 	if (!isPullStart.value || isRefreshing.value || disabled) return;
 
-	if ((scrollEl?.scrollTop ?? 0) > (supportPointerDesktop ? SCROLL_STOP : SCROLL_STOP + pullDistance.value) || isHorizontalSwipeSwiping.value) {
+	if ((scrollEl?.scrollTop ?? 0) > SCROLL_STOP + pullDistance.value || isHorizontalSwipeSwiping.value) {
 		pullDistance.value = 0;
 		isPullEnd.value = false;
 		moveEnd();
@@ -186,14 +186,18 @@ function onScrollContainerScroll() {
 
 function registerEventListenersForReadyToPull() {
 	if (rootEl.value == null) return;
+	rootEl.value.addEventListener('mousedown', moveStart, { passive: true });
 	rootEl.value.addEventListener('touchstart', moveStart, { passive: true });
 	rootEl.value.addEventListener('touchmove', moving, { passive: false }); // passive: falseにしないとpreventDefaultが使えない
+	window.addEventListener('pointermove', moving, { passive: true });
 }
 
 function unregisterEventListenersForReadyToPull() {
 	if (rootEl.value == null) return;
+	rootEl.value.removeEventListener('mousedown', moveStart);
 	rootEl.value.removeEventListener('touchstart', moveStart);
 	rootEl.value.removeEventListener('touchmove', moving);
+	window.removeEventListener('pointermove', moving);
 }
 
 onMounted(() => {
@@ -205,6 +209,7 @@ onMounted(() => {
 	scrollEl.addEventListener('scroll', onScrollContainerScroll, { passive: true });
 
 	rootEl.value.addEventListener('touchend', moveEnd, { passive: true });
+	window.addEventListener('pointerup', moveEnd, { passive: true });
 
 	registerEventListenersForReadyToPull();
 });